由于jquery或php,getJSON返回null或什么都没有?

时间:2012-03-22 15:49:40

标签: php jquery json

我创建了一个php文件来返回用JSON编码的数据,然后使用getJSON来读取它。我试图从一个来源获取信息并将其分发到多个区域。我已经更改了内容类型,也允许所有访问头文件。此时我被困住了。任何想法如何使这个工作?

PHP

header('Cache-Control: no-cache, must-revalidate');
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');

$search_terms = curlData();
$json = array("term" => $search_term);   
echo $_GET['callback'] . "(" . json_encode($json) . ");";

此php文件的输出如下:

({"term":"sandwich city"});

这是我用来检索json信息的jQuery

$.getJSON("http://MYWEBSITE.com/terms.php?callback", function(data) {
    alert(data);
});

1 个答案:

答案 0 :(得分:1)

({"term":"sandwich city"});无效JSONP。您缺少功能名称

=?添加到您的网址,以便jQuery自动生成处理响应的函数:

http://MYWEBSITE.com/terms.php?callback=?

来自documentation

  

如果URL包含字符串"callback=?"(或类似的,由服务器端API定义),则该请求将被视为JSONP。有关详细信息,请参阅$.ajax()jsonp数据类型的讨论。


顺便说一句,如果您将JSONP作为响应发送,则将响应的内容类型设置为application/json是不正确的。响应只是JavaScript。

此外,当您指定Access-Control-Allow-Origin标头时,您根本不必使用JSONP,您可以进行正常的AJAX调用并返回JSON。