我正在使用PHP脚本来创建JSON数据。它看起来像这样:
{"Id":0}
现在,如果我把它放入一个文件,然后使用ajax加载它就可以了。但是,如果我从PHP脚本请求这个,我得到
parsererror | SyntaxError:意外的标记ILLEGAL
以下是我用来从PHP加载JSON的代码:
$.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}';
?>
有什么想法吗?
答案 0 :(得分:8)
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;
答案 1 :(得分:1)
在错误函数中使用此函数并检查从服务器返回的数据。
error: function(jqXHR, textStatus, errorThrown) {
$('#result').html(textStatus + ' | ' + errorThrown + ' | ' + jqXHR.responseText);
alert(jqXHR.responseText);
}
你会知道到底出了什么问题。数据类型和特殊字符。将内容类型设置为 application / json ,并使用json_encode()
对json字符串进行编码。此外,您不需要doctypes。
答案 2 :(得分:0)
使用jquery的parseJSON
e.g。
success: function(data) {
data = jQuery.parseJSON(data);
$('#result').html('#Id=' + data.Id);
}