2012-03-22 94 views
0

我创建一个PHP文件来返回JSON编码数据,然后使用getJSON读它。我试图从一个来源获取信息并将其分发到多个区域。我已经更改了内容类型,并允许使用标题进行所有访问。此时我卡住了。任何想法如何得到这个工作?getJSON由于jquery或php返回null或什么都没有?

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"}); 

这里是jQuery的我使用检索JSON信息

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

+0

只是一个侧面说明,您的警报应该读作警报(data.term);'。我知道你现在只是在测试,这不会改变你得到的NULL,但是我认为Id就是这么说的。 – Dutchie432 2012-03-22 15:55:17

+0

@ Dutchie432感谢提示 – jon 2012-03-22 16:05:03

回答

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。

+0

感谢所有的信息。我添加了'callback =?'和'alert(data.term)';'现在它可以工作。 – jon 2012-03-22 16:04:43