Создание данных JSON с использованием PHP и его анализ с помощью jQuery

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

{"Id":0} 

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

parsererror | SyntaxError: Неожиданный токен 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}'; ?> 

Есть идеи?

Doctypes принадлежат 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; 

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

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

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

использовать jquery parseJSON
например

 success: function(data) { data = jQuery.parseJSON(data); $('#result').html('#Id=' + data.Id); }