отправка нескольких переменных с помощью ajax (JQuery) - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь отправить 2 переменные в вызове JQuery Ajax, но по какой-то причине обе переменные в итоге объединяются в первую:

function getNextQuestion(answer, queryType)
{    
    $.ajax
    ({
        async: false,
        url: 'handlers/question_hdlr.php',
        type: 'POST',
        data: "answer="+ answer +"&queryType=" + queryType,
        dataType: "json",
        success: function(result)
        {
           ...
        },error: function(XMLHttpRequest, textStatus, errorThrown)
        {
           alert ("error: "+textStatus);
        }
    });
    return false;
}

Когда я запускаю его в отладчике, я получаютолько одна переменная:

$_POST["answer"], содержащая "answerqueryTypequeryType"

$_POST["queryType"], не существует.

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 10 ноября 2011

Вам не нужно вручную сериализовывать ваши данные.Просто передайте объект, и jQuery его сериализует для вас.

$.ajax({
    ...
    data: { answer: answer, queryType: queryType }
});

Кроме того, никогда не выдает запросы AJAX с async:false.Не существует веской причины для использования синхронного XHR-запроса.

0 голосов
/ 10 ноября 2011

Только что обнаружил, что в коде вопроса нет ничего плохого, единственная проблема заключалась в том, что файл Javascript, кэшированный браузером, содержал опечатку, и хотя проблема была исправлена ​​на рабочей копии, браузер никогда не был на самом деле запустить его.

Решением было добавить дату и время в URL скрипта в качестве параметра, чтобы браузер не использовал кэшированную версию:

<script type="text/javascript" src="<?= $pathRoot ?>js/commline.js?<?= date(U);?>" />

Это отлично работает.

...