В чем проблема с этим AJAX (с прототипом)? - PullRequest
1 голос
/ 05 февраля 2009

Здравствуйте, у меня есть следующий код: сторона php:

<?php
print_r($_POST);
print_r($_GET);
die();
?>

В JavaScript:

voteAjax = function(typez, actionz, idz){
    new Ajax.Request(
        'http://localhost/reporeade/Vote/Ajax/?rand='+Math.random()*500000, 
        {asynchronous:true, 
         evalScripts:true,
         method:'post',
         parameters:'contentType='+typez+'&action='+actionz+'&id='+idz 
        });
    return false; 
}

И в какой-то части моего html:

<a class="button" onclick="voteAjax('content','up','89');">

Вы можете видеть, что я бегу на локальном хосте ... у меня проблема в том, что POST каким-то образом перепутал НЕКОТОРЫЕ, я получаю следующий ответ 90% времени:

Array
(
    [contentType] => content
    [action] => up
    [id] => 89
)

Array
(
    [rand] => 449701.9597706424
)

А остальные 10% времени я получаю:

Array
(
)

Array
(
    [rand] => 468905.44804602925
)

Теперь, я попробовал все, изменил компьютер, попробовал на сервере с полным URL-адресом (думая, может быть, проблема в localhost), где-то прочитал, что с помощью http://localhost/reporeade/Vote/Ajax/?rand= вместо http://localhost/reporeade/Vote/Ajax?rand= решен проблема, но попробовал оба и действительно не могу предпринять то, что заставило бы почту потеряться .... любые идеи?

Edit: Хорошо поиграв со всем этим, я заработал (как он есть) на нашем производственном сервере, но во всех наших установках wamp он не будет работать (ну, как правило, 50% времени). Для меня очень важно решить эту проблему, чтобы мы могли продолжить разработку всех функций ajax продукта, так что ...

  • Я пробовал xampp, но он не совместим с нашей платформой
  • Я попытался перейти на apache 2.0 вместо 2.2 в wamp
  • Я пытался использовать разные конфигурации httpd.conf и php.ini

Любые идеи о том, почему вампир терпит неудачу, как это?

Обновление: Я уверен, что проблема в установке wamp, которая иногда не отправляет POST правильно, любая помощь, которая приведет к ее решению, даст правильный ответ и щедрость!

Ответы [ 12 ]

0 голосов
/ 16 февраля 2009

Я бы сделал вызов Ajax так:

voteAjax = function(typez, actionz, idz){
    var rndVal = Math.random()*500000;

    new Ajax.Request( 'http://localhost/reporeade/Vote/Ajax/', {
         method:  'post',
         parameters: {contentType: typez, action: actionz, id: idz, rand: rndVal}, 
         onSuccess:  function(response) {
               //do stuff
         },
         onFailure:  function() {
               alert('Something went wrong.');
         }
        });
     return false;
  }
0 голосов
/ 11 февраля 2009

Что произойдет, если вместо этого использовать GET. Я имею в виду, если вы объедините другие параметры в URL тоже? Как это

voteAjax = function(typez, actionz, idz){
    new Ajax.Request(
        'http://localhost/reporeade/Vote/Ajax?'+'contentType='+typez+'&action='+actionz+'&id='+idz+'&now='+new Date(), 
        {asynchronous:true, 
         evalScripts:true,
         method:'post',
         parameters:'' 
        });
    return false; 
}

Я думаю, вы можете использовать GET.
Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...