这是我的jQuery Ajax代码
$(document).ready(function() {
$("#submitService").click(function(){
alert("Before ajax");
$.ajax({
type: "GET",
url: "http://api.openweathermap.org/data/2.5/weather?q=London,uk",
headers: {"accept": "application/json"},
success: function (dataItem) {
alert("Success..");
},
complete: function (dataItem) {
alert("Completed");
},
error: function (dataItem) {
alert("Error in making engine call."+dataItem);
}
});
alert("After ajax");
}); //click()
});
单击我的按钮时,它会进入[完成]和[错误]回调方法,但不会回到“成功”回叫方法。如何查看错误是什么?
我试图卷曲同样的陈述,我得到了有效的答复:
curl "http://api.openweathermap.org/data/2.5/weather?q=London,uk" -H "accept: application/json"
我正在使用jQuery 1.7.2
<script type="text/javascript" src='<spring:url value="/resources/jquery/js/jquery-1.7.2.min.js"/>'></script>
在FireBug中,它显示请求200 OK,但没有响应正文。但是当我通过卷曲做的时候,我看到了反应体。
可能是什么问题? 感谢
答案 0 :(得分:3)
我想,这是URL编码问题。将逗号,
替换为编码%2C
url: "http://api.openweathermap.org/data/2.5/weather?q=London%2Cuk"
答案 1 :(得分:1)
取消点击事件
$("#submitService").click(function(e){
e.preventDeault();
...
让jQuery对URL进行正确的编码
type: "GET",
url: "http://api.openweathermap.org/data/2.5/weather",
data: {q : "London,uk" },
希望服务和浏览器都支持CORS,因为这是一个Same Origin Policy问题。
答案 2 :(得分:1)
您是否注意到Api呼叫中没有Allow-Access-Origin?
我在chrome上得到了这个
XMLHttpRequest无法加载 http://api.openweathermap.org/data/2.5/weather?q=London,uk。没有 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,不允许原点“http://jquery.com”访问。
我认为您有跨网站脚本问题。
答案 3 :(得分:0)
将application / json更改为application / x-www-form-urlencoded