jQuery, Ajax, JSON, PHP и parsererror - PullRequest
       14

jQuery, Ajax, JSON, PHP и parsererror

4 голосов
/ 10 августа 2009

Я пытаюсь отправить форму в PHP, используя $.ajax в jQuery . Я отправляю все это как JSON, но когда я пытаюсь получить ответ, я получаю 'parsererror'. Что я делаю не так?

JQuery фрагмент:

$("form").submit(function(){
    $.ajax({type: "POST",
        url: "inscrever_curso.php",
        data: {cpf : $("input#cpf").val(),nome : $("input#nome").val()},
        dataType: "json",
        success: function(data){
            alert("sucesso: "+data.msg);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert ("erro: "+textStatus);
        }
    });
    return false;
});

PHP:

<?php
    $return[msg]="Testing, testing.";
    echo json_encode($return);
?>

Ответы [ 3 ]

6 голосов
/ 10 августа 2009

Я не знаю, является ли это причиной вашей проблемы, но есть одна вещь в вашем PHP-коде:

$return[msg]="Testing, testing.";
echo json_encode($return);

При этом с уровнем E_NOTICE error_reporting вы получите:

Notice: Use of undefined constant msg - assumed 'msg'

Если уведомления включены и отображаются на вашем сервере, это приведет к выводу, который не является допустимым JSON (вывод содержит сообщение об ошибке перед строкой JSON).


Чтобы избежать этого уведомления, вы должны использовать следующий синтаксис:

$return['msg']="Testing, testing.";
echo json_encode($return);

Обратите внимание на кавычки вокруг msg: ключ элемента массива, который вы создаете, является строковой константой, поэтому он заключен в кавычки.

Если вы не введете эти кавычки, PHP будет искать определенную константу, называемую "msg", которая, вероятно, не существует.

Для получения дополнительной информации об этом вы можете взглянуть на этот раздел руководства: Почему $ foo [bar] не так? .

(я не уверен, что это решит вашу проблему, но все равно это полезно знать.)

3 голосов
/ 10 августа 2009

Ваш код PHP, вероятно, должен быть:

<?php
    $return = array();
    $return['msg']="Testing, testing.";
    echo json_encode($return);
?>
1 голос
/ 10 августа 2009

Я только что узнал, что происходит: у меня есть скрипт .htaccess для дружественных URL-адресов, и он искал правильный файл PHP, но в неправильном каталоге. Я просто добавил «/» перед именем файла в URL, и затем это сработало.

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