Javascript 使用PHP服务返回有效的json和$.ajax
我一直在使用用PHP创建的web服务,不知道我做错了什么。。我在这里创建了一个小提琴示例: 我尝试了各种组合,但不断得到404未找到的反馈,当我指定jsonp时,我没有收到错误消息,但在web控制台中,我可以看到404错误。。在浏览器中,当我访问url时,它将返回有效的json 我的问题是如何知道何时使用jsonp或json?此外,这些服务是从外部来源提供给我的,而不是同意返回json。我如何知道问题是在我这边还是在他们这边 下面是ajax代码Javascript 使用PHP服务返回有效的json和$.ajax,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我一直在使用用PHP创建的web服务,不知道我做错了什么。。我在这里创建了一个小提琴示例: 我尝试了各种组合,但不断得到404未找到的反馈,当我指定jsonp时,我没有收到错误消息,但在web控制台中,我可以看到404错误。。在浏览器中,当我访问url时,它将返回有效的json 我的问题是如何知道何时使用jsonp或json?此外,这些服务是从外部来源提供给我的,而不是同意返回json。我如何知道问题是在我这边还是在他们这边 下面是ajax代码 baseUrl = "http://exclusi
baseUrl = "http://exclusivegetaways.co.za/api.php";
$.ajax({
type: "GET",
url: baseUrl,
data: {something : "something"},
//contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert("works");
alert(result);
},
error: function (a,b,cc) {
alert(a+b+cc);
}
});
我已经能够从ajax错误对象中提取json数据了??像这样:
baseUrl = "http://exclusivegetaways.co.za/api.php?something=something";
$.ajax({
type: "GET",
url: baseUrl,
dataType: "json",
success: function (res) {
alert("worked");
//alert(res);
},
error: function(jqxhr) {
try {
f = JSON.parse(jqxhr.responseText);
...valid json returned here
} catch(err) {alert(err);}
}
});
这是因为存在一个安全限制,它阻止Ajax查询远程位置 作为一种通过Ajax访问远程位置的变通方法,您可以在webApp(例如PHP)中构建一个自定义URL,该URL查询远程API并返回JSON
然后,在JavaScript中,通过Ajax调用此URL(从您的应用程序)。首先:始终查看JavaScript错误控制台 另见
我尝试了各种组合,但不断得到404未找到的反馈,当我指定jsonp时,我没有收到错误消息,但在web控制台中,我可以看到404错误。在浏览器中,当我访问url时,它将返回有效的json 这表明:
- 他们不支持JSONP
- 他们查看HTTP头和404请求,以阻止来自Ajax的访问(这不是一个好方法,错误代码是误导性的)
我的问题是如何知道何时使用jsonp或json 通常通过阅读您尝试使用的服务器的文档
此外,这些服务是从外部来源提供给我的,而不是同意返回json。我如何知道问题是在我这边还是在他们这边 通常通过使用API提供商提供的任何支持(即从他们的文档开始,然后回到他们提供的与人通信的任何方式)。由于您的ajax请求,仅在以下情况下才允许: 域名、应用层协议和(在大多数浏览器中)端口 运行脚本的HTML文档数相同 在您的情况下,应用层协议不同,这就是脚本失败的原因 可能的解决办法是:
- ,必须由服务器提供
- ,这是一个更“优雅”和干净的解决方案,但尚未完全得到IE的支持(IE7不支持,IE8有一些限制)
请检查此url,此问题已在前面询问过。[何时使用json以及何时将jsonp与jquery$.ajax结合使用?][1][1]:我不知道访问控制的事情,我能通过它吗?我正在尝试创建一个移动应用程序,这样它就不会在同一个域中。至于浏览器,它拾取url没有问题,我甚至在jsonlint中检查了结果。你在移动应用程序中使用什么模拟器。对于android emulator,我也遇到了同样的问题,但在设备上进行了测试,效果很好。xcode和android都没有给出结果。
XMLHttpRequest cannot load http://exclusivegetaways.co.za/api.php?location=provinces.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://fiddle.jshell.net' is therefore not allowed access.