AJAX JSON + PHP JSON ошибка - PullRequest
       1

AJAX JSON + PHP JSON ошибка

2 голосов
/ 25 августа 2011

У меня есть JQuery AJAX-код, который получает данные типа JSON из php-файла. Без dataType: "JSON" все в порядке. Но мне нужны данные типа JSON. Полученный текст является действительным кодом JSON

{"ok": "false", "answer": "Все поля должны быть заполнены"}

Но когда я использую dataType, у меня появляется ошибка

Объект "parsererror" SyntaxError

Вот код JS:

    $.ajax({
        url : "testing/regtest.php",
        type : "POST",
        dataType: "json",
        data : {
            mail : $('#mail_field').val(),
            username : $('#username_field').val(),
            password : $('#password_field').val(),
            password_2 : $('#rep_password_field').val()
        },
        success : function(data) {
            console.log(data.ok);
        },
        error: function(a,b,c) { console.log(a,b,c); }
    });

Спасибо за любую помощь!
Обновить: Вот php серверный код: http://jsfiddle.net/VfQbz/1/
Обновление 2: работает в IE9, но не работает в Chrome

Ответы [ 3 ]

3 голосов
/ 25 августа 2011

Я не совсем уверен, работает ли это, но ИМХО, проблема в паршивой функции кодирования JSON PHP.Попробуйте:

if (check_post() === true) {
    $password = $_POST['password'];
    $password2 = $_POST['password_2'];
    $username = $_POST['username'];
    $mail = $_POST['mail'];
    if (valid_data($password, $password2, $username, $mail) === true){
        $answer = json_encode(array("ok" => "true", "answer" =>     $service_messages["account_registered"]));
        echo "'".$answer."'"; // Note the additional single quotes
    }
}

При поиске в источнике jQuery я обнаружил ошибку при разборе ответа.Надеюсь, что это работает.

1 голос
/ 25 августа 2011

Просто для того, чтобы охватить все базы: вы уверены, что ваш jQuery обновлен и никак не изменен?

1 голос
/ 25 августа 2011

Ваш код PHP устанавливает правильный заголовок?

header('Content-type: application/json');

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