使用PHP创建JSON数据并使用jQuery解析它

时间:2011-06-13 00:36:36

标签: php ajax json

我正在使用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}';

?>

有什么想法吗?

3 个答案:

答案 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);
}