我正在编写一个非常基本的Facebook应用程序,但我遇到了跨域AJAX请求的问题(使用jQuery)。
我已经编写了一个代理页面,通过cURL向图表发出请求,我正在通过AJAX调用。我可以在浏览器中访问该页面并看到它具有正确的输出,但是通过请求页面始终会导致jQuery触发错误处理程序回调。
所以我有两个文件:
代理,执行cURL请求
<?php
//Do some cURL requests, manipulate some data
//return it as JSON
print json_encode($data);
?>
Facebook画布,其中包含此AJAX调用
$.getJSON("http://myDomain.com/proxy.php?get=stuff",
function(JSON)
{
alert("success");
})
.error(function(err)
{
alert("err");
});
使用Firebug检查调用显示它返回HTTP代码200 OK
,但始终触发错误处理程序,并且不返回任何内容。 无论我是否设置Content-Type: application/json
,都会发生这种情况。
在使用AJAX之前,我已经在PHP中编写了返回JSON的API,从未遇到过这种麻烦。
什么可能导致请求始终触发错误处理程序?
答案 0 :(得分:0)
最近我遇到了同样的问题,我的问题是由于SSL,网页和API之间存在域名差异。
网页上有一个 HTTP 地址(http://myDomain.com),我通过JQuery请求的内容位于相同的域但HTTPS 协议上( https://myDomain.com)。浏览器(在这种情况下是Chrome)认为域名是不同的(第一个是 HTTP ,第二个是 HTTPS ),仅仅是因为协议,因为请求响应类型是“application / json”,浏览器不允许它。
基本上,请求工作正常,但您的浏览器不允许回复内容。
我必须添加“ Access-Control-Allow-Origin ”标头才能使其正常工作。如果您的情况相同,请查看:https://developer.mozilla.org/en/http_access_control。
我希望能帮到你,我自己也很头疼。