JQuery AJAX没有成功回调函数

时间:2013-11-25 06:11:53

标签: java javascript jquery ajax jsp

这是我的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,但没有响应正文。但是当我通过卷曲做的时候,我看到了反应体。

可能是什么问题? 感谢

4 个答案:

答案 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