Мои функции возврата не работают с моим jQuery ajax - PullRequest
0 голосов
/ 22 декабря 2011

У меня есть это:

$("#upvote").click(function(){
    var up = parseInt(document.getElementById('voteScore').innerHTML);
    up++;
    document.getElementById('voteScore').innerHTML = up;
    $.ajax({
            type: 'POST',
        url: 'include/mysql_lib.php',
        data: {'data[]':['upvote','<?php echo $id; ?>', '<?php echo $uid; ?>']},
        dataType: "text",
        success: function(dataType) {
                if (dataType == "false") {
                    var up = parseInt(document.getElementById('voteScore').innerHTML);
                    up--;
                    document.getElementById('voteScore').innerHTML = up;
                }
        }
    });
});

Файл mysql_lib.php (если обнаружена ошибка) имеет следующую строку:

return "false";

Чтоя делаю не так?Я никогда раньше не использовал jQuery.

1 Ответ

4 голосов
/ 22 декабря 2011

Ответ сервера функции AJAX (переменная 'dataType' в вашем коде) хранит все, что ваш PHP-скрипт выписал на сервер. В вашем PHP-скрипте, если вы return "false" вернете строку из функции, но если вы хотите получить значение в вашем JavaScript, вы должны использовать echo "false", чтобы ответ JavaScript от сервера был false.

function test() {
    //do some work
    return "false";
}
echo test();//this will output "false" to the browser

function test() {
    echo "false";//this will output "false" to the browser
}

Когда сталкиваешься с подобными проблемами, хорошей идеей будет поместить console.log(dataType) или alert(dataType) в функцию обратного вызова AJAX, чтобы увидеть, что выводит ваш PHP. Ответ от вашего сценария PHP также можно просмотреть в большинстве инструментов разработчика (например, FireBug).

И предложение для тебя. Если вы хотите получить более сложную информацию из своего PHP-скрипта, взгляните на функцию PHP json_encode () , которая делает связь между PHP и JavaScript безболезненной.

...