我有返回JSON数据的服务:http://api.drag2droid.shamanland.com/captcha?base64AJAX请求失败原因不明(jQuery的)
我试图执行简单的AJAX请求:
$.ajax({
type: "get",
url: "http://api.drag2droid.shamanland.com/captcha?base64",
dataType: "json",
success: function(data) {
$("body").html(data);
},
error: function(jqXHR, textStatus, errorThrown) {
$("body").html("ajax failed: " + textStatus + ", " + jqXHR.status + " " + errorThrown);
}
});
结果是:
ajax failed: error, 0
但是,如果我只是将这个URL粘贴到我的浏览器的地址栏中,我可以看到JSON响应。
有人知道可能的陷阱吗?
的jsfiddle:http://jsfiddle.net/shomeser/n5TjL/
编辑:
其实,我已经设置了我的服务器端允许来自任何域的任何标题,PHP代码的所有请求:
if ($_SERVER["REQUEST_METHOD"] == "OPTIONS") {
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
header("Access-Control-Max-Age: 86400");
header("Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS");
if (isset($_SERVER["HTTP_ACCESS_CONTROL_REQUEST_HEADERS"])) {
header("Access-Control-Allow-Headers: {$_SERVER["HTTP_ACCESS_CONTROL_REQUEST_HEADERS"]}");
}
exit(0);
}
编辑:
在冷杉的网络选项卡ebug插件我可以看到没有检索到内容:
但是直接从浏览器获取GET请求会显示完整内容。
检查你的开发工具,网络选项卡,并查看请求后, ajax调用失败了。如果它的跨域问题,你的控制台应该有一些错误。 –
您是否在同一个域上运行该网站和API?我相信你知道AJAX调用不能跨域使用。为此你必须使用'JSONP' –