我一直坚持使用PHP创建的Web服务,不知道我做错了什么..我在这里创建了一个小提琴示例:http://jsfiddle.net/e97AV/ 我已经尝试了各种组合的东西,但继续得到404未找到反馈,当我指定jsonp我没有得到错误消息,但在Web控制台我可以看到404错误..在浏览器中当我访问url时,它返回有效的json
我的问题是如何知道何时使用jsonp或json?此外,这些服务是从外部来源提供给我的,除了同意json被退回我怎么知道问题是在我身边还是他们的?
继承人ajax代码
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);}
}
});
答案 0 :(得分:0)
这是因为安全限制阻止了Ajax查询远程位置。
作为通过Ajax访问远程位置的解决方法,您可以在webApp(例如PHP)中构建自定义URL,该URL查询远程API并返回JSON。
然后,在您的JavaScript中,您通过Ajax调用此URL(来自您的应用程序)。
答案 1 :(得分:0)
首先:始终查看您的JavaScript错误控制台。
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.
另见Ways to circumvent the same-origin policy
我尝试了各种各样的组合但继续获得404未找到反馈,当我指定jsonp时我没有收到任何错误消息,但在Web控制台中我可以看到404错误。在浏览器中,当我访问url时,它返回有效的json
这表明:
我的问题是如何知道何时使用jsonp或json?
通常通过阅读您尝试使用的服务器的文档
此外,这些服务是从外部来源提供给我的,除了同意json被退回,我怎么知道问题是在我身边还是他们的?
通常通过使用API提供商提供的任何支持(即从他们的文档开始,然后回到他们提供的与人类通信的任何方式)。
答案 2 :(得分:-1)
由于Same Origin Policy,只有在以下情况下才允许您的ajax请求: 域名,应用层协议和(在大多数浏览器中)端口 运行脚本的HTML文档的编号是相同的
在您的情况下,应用层协议不同,这就是您的脚本失败的原因。
可能的解决方案是: