$ .getJSON在有效JSON上失败?

时间:2013-02-08 19:11:51

标签: php jquery json

我正在解决JQuery / JSON问题,$.getJSON函数的响应没有意义。

所以这是我的Javascript代码摘录:

var jqxhr = $.getJSON("myPHPFunction.php", function() {
      alert("success");
    })
    .success(function() { alert("second success"); })
    .error(function() { alert("error"); })
    .complete(function() { alert("complete"); });

PHP函数返回的JSON是:

{"sid":"12", "name":"somename", "email":"someemail"}

完整回复:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body> {"sid":"12", "name":"somename", "email":"someemail"}
</body>
</html>

当我运行脚本时,会出现一个对话框,显示error

一些在线验证器报告JSON语法正确。那为什么JQuery失败了?请注意,php和脚本都在同一个文件夹(在服务器上)和相同的域中。

2 个答案:

答案 0 :(得分:3)

从评论中,您无法将JSON封装在HTML标记中。您需要确保返回的数据(“查看源代码”是验证这一点的好工具)是纯JSON。

答案 1 :(得分:1)

您的回复不得包含任何HTML!

可能你还需要设置正确的内容类型:

header("Content-Type: application/json");
echo('{"sid":"12", "name":"somename", "email":"someemail"}');
exit();

上面的代码应该有用。

请注意,您不得在标题行之前输出任何其他代码。