Создание данных JSON с использованием PHP и их разбор с помощью jQuery - PullRequest
2 голосов
/ 13 июня 2011

Я использую скрипт PHP для создания данных JSON. Это выглядит так:

{"Id":0}

Теперь, если я помещу это в файл, а затем загрузлю его, используя ajax, это нормально. Но если я запрашиваю это из сценария PHP, я получаю

parsererror | Ошибка синтаксиса: неожиданный токен ILLEGAL

Вот код, который я использую для загрузки JSON из PHP:

$.ajax({
                    url: 'check.php',
                    data: {
                        username: 'LOL',
                        password: '1234'
                    },
                    dataType: 'json',
                    type: 'POST',
                    success: function(data) {
                        $('#result').html('#Id=' + data.Id);
                    },
                    error: function(jqXHR, textStatus, errorThrown) {
                        $('#result').html(textStatus + ' | ' + errorThrown);
                    }
                });

Вот код PHP:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<?php

    echo '{"Id":0}';

?>

Есть идеи?

Ответы [ 3 ]

8 голосов
/ 13 июня 2011

Типы документов принадлежат документам HTML, а не JSON.

Попробуйте что-то подобное в вашем PHP-файле (и только в этом)

<?php
header('Content-Type: application/json');
?>
{"Id":0}

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

<?php
header('Content-Type: application/json');
$data = array(
    'Id'  => 0,
    'foo' => $someOtherComplexVariable
);
echo json_encode($data);
exit;
1 голос
/ 13 июня 2011

В вашей функции ошибки используйте это и проверьте, какие данные возвращаются с сервера.

error: function(jqXHR, textStatus, errorThrown) {
   $('#result').html(textStatus + ' | ' + errorThrown + ' | ' + jqXHR.responseText);
   alert(jqXHR.responseText);
}

Вы будете знать, где именно это идет не так. Тип данных и специальные символы. Установите тип контента application / json и закодируйте строку json, используя json_encode(). Кроме того, вам не нужны типы документов.

0 голосов
/ 13 июня 2011

использовать парсинг jqueryJSON
например

success: function(data) {
    data = jQuery.parseJSON(data);
 $('#result').html('#Id=' + data.Id);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...