2011-12-16 106 views
1

据我所知,$.ajax在所有浏览器中一直工作得很顺利,直到现在。 我有一个非常简单的函数,在用户发生几个动作时调用。在Firefox中,一切都运行平稳。但在Chrome中,$.ajax请求启动时,成功回调不会触发。Chrome jquery ajax回调成功不发射

这里是真正的代码段:

var form = $("#templateCreator"), 
    formType = form.attr("method"), 
    formData = form.serialize(), 
    action = form.attr('action'); 

    $.ajax({ 
     type: formType, 
     url: action, 
     data: formData, 
     success: function(){ 
      console.log('Can\'t see me in Chrome, but ok in firefox !') 

      // Handle all form submit events to form validator first 
      validator(form, targetInput); 
     } 
    }); 

什么是令人费解的是似乎没有任何错误,数据序列化,并送到正确。有谁知道我错过了什么?

+1

您是否尝试过记录AJAX调用中使用的变量的值(`formType` /`formData` /`action`)?你是否依靠`validator()`函数来验证它是否正常工作,或者你是否试图将`console.log()`作为你的`success`回调的第一行? – Jasper 2011-12-16 17:28:34

+3

localhost?如果属实,那为什么它不起作用。 Chrome不允许在本地主机上使用AJAX – andlrc 2011-12-16 17:28:58

+0

@AndreasAL,你在本地主机上做错了。 – Esailija 2011-12-16 17:30:24

回答

2

以@Jasper建议的方式添加错误和完整方法开始。

$.ajax({ 
     type: formType, 
     url: action, 
     data: formData, 
     success: function(){ 
      console.log('Can\'t see me in Chrome, but ok in firefox !') 

      // Handle all form submit events to form validator first 
      validator(form, targetInput); 
     }, 
     error: function() { 
      console.log($.makeArray(arguments)); 
     }, 
     complete: function() { 
      console.log($.makeArray(arguments)); 
     } 
    }); 

然后,您可以:

  1. 打开Chrome调试器(F12),转到脚本标签,并把成功/完成/错误中的断点;检查出堆栈跟踪和值的突然显现;)
  2. 看看控制台日志
  3. 为了大快乐,把每个Zig!
3

试试这个.....

数据:FORMDATA, 异步:假,

铬与异步调用的一些问题。

1

我有这个问题,并设置async:false。这在Chrome中适用于我。 Chrome看起来像是async:true的问题。

restget = function(url, cb){ 
     $.ajax({ 
     url: url, 
     dataType: 'json', 
     crossDomain: true, 
     async: false, 
     success: cb 
     }); 
0

我在尝试获取json数组时遇到了类似的问题。我必须将dataType: 'json'添加到我的ajax中,以便非Firefox浏览器知道我的数据类型是什么。例如:当在Firefox萤火跑

$.ajax({ 
    type: 'Get', 
    url: "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo", 
    success: function(data){ 
     var jsonArray = jQuery.parseJSON(data); 
     alert(jsonArray.status.message); 
    } 
}); 

$.ajax({ 
    type: 'Get', 
    url: "http://api.geonames.org/earthquakesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&username=demo", 
    dataType: 'json', 
    success: function(data){ 
     var jsonArray = data; 
     alert(jsonArray.status.message); 
    } 
}); 

会显示同样的事情。但是,当你在Chrome DevTools中运行它时,它只能在最底层。我希望这能解决你的问题。