Я использую 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); }