我创建了一个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);
});
答案 0 :(得分:1)
({"term":"sandwich city"});
无效JSONP。您缺少功能名称。
将=?
添加到您的网址,以便jQuery自动生成处理响应的函数:
http://MYWEBSITE.com/terms.php?callback=?
如果URL包含字符串
"callback=?"
(或类似的,由服务器端API定义),则该请求将被视为JSONP。有关详细信息,请参阅$.ajax()
中jsonp
数据类型的讨论。
顺便说一句,如果您将JSONP作为响应发送,则将响应的内容类型设置为application/json
是不正确的。响应只是JavaScript。
此外,当您指定Access-Control-Allow-Origin
标头时,您根本不必使用JSONP,您可以进行正常的AJAX调用并返回JSON。