Jquery ajax响应没有调用Success方法

时间:2015-01-12 14:23:20

标签: javascript jquery ajax

我对ajax很新,并且正在处理jquery ajax请求。 Ajax回调不是调用成功方法。跨站点域之间的交互。 我的AJAX请求看起来像

   $.ajax({
       timeout: 20000,
       url: 'test.com',
       crossDomain: true,
       dataType: 'jsonp',
       success: function (data) {
           console.log('callback success');
           this._cache = data;
           localStorage.token = data.access_token;
     } });

此次通话中没有错误。

这个ajax请求没有调用成功函数。请求返回json数据。只是成功方法没有被调用。

此ajax请求未调用成功函数。

获取请求已成功解雇。我甚至可以用200 http响应跟踪fiddler中的响应。由于某种原因,成功方法没有被调用。

3 个答案:

答案 0 :(得分:1)

  

它返回了json对象,我在fiddler中追踪过

您告诉jQuery期待JSONP响应,因此它尝试执行JSON文档,就好像它是一个JavaScript脚本(因为这就是JSONP)。这失败了,因为它不是JSONP。

返回JSONP而不是JSON或(假设服务器返回正确的Content-Type)删除dataType: 'jsonp',

答案 1 :(得分:0)

好吧......我带着同样的问题来到这里......当我读到指定datatype:jsonp从来没有通过上面的评论来调用成功作为@mondjunge的回调时,它开始让我思考一些行为我我早些时候从我的代码中看到,也许datatype:json可能也有同样的行为。

因此,在阅读本页后,我从我的ajax请求中取出了我的数据类型声明,并且我的servlet返回了正确的数据有效负载,返回了200,并且jquery最终调用了成功函数并修改了我的DOM。

所有这些步骤都发生了,除了最后一步,直到我从ajax调用中删除了我的数据类型。不是我所期待的!

希望其他人可以对为什么发生这种情况有所了解......至少现在至少少数不会对这个问题失去理智的人发现这篇帖子可以做到这一点时间。

答案 2 :(得分:-1)

  1. 检查您的ajax是否已执行
  2. 检查它的状态。如果响应代码是!= 200,那么你也应该添加错误方法,以便进行错误处理。
  3. 试试这个:

    $.ajax({
       timeout: 20000,
       url: 'test.com',
       method: 'GET',
       crossDomain: true,
       dataType: 'jsonp',
       success: function (data) {
           console.log('callback success');
           this._cache = data;
           localStorage.token = data.access_token;
        }, 
        error: function(xhr, error){
           console.debug(xhr); console.debug(error);
        },
     });