Chrome jquery ajax回调成功不解雇

时间:2011-12-16 17:23:54

标签: ajax google-chrome jquery

据我所知,到目前为止,$.ajax在每个浏览器中都一直运行得非常顺利。 我有一个非常简单的函数,在用户发生一些操作时调用。 在Firefox中,一切运行顺利。但是在Chrome中,$.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);
        }
    });

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

4 个答案:

答案 0 :(得分:3)

首先添加一个错误和完整的方法@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),转到脚本标签,并在成功/完成/错误中放置一个断点;检查顿y的堆栈跟踪和值;)
  2. 查看控制台日志
  3. 非常高兴,取下每个Zig!

答案 1 :(得分:2)

试试这个......

data:formData, async:false,

Chrome在异步调用方面存在一些问题。

答案 2 :(得分:2)

我遇到了这个问题,并设置了async:false。这适用于Chrome。看起来Chrome有异步问题:true。

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

答案 3 :(得分:0)

我在尝试获取json数组时遇到了类似的问题。我必须将dataType: 'json'添加到我的ajax中,以便非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);
    }
});
在Firefox firebug中运行时,

会显示相同的内容。但是当你在Chrome DevTools中运行它时,它只适用于底层。我希望这可以解决你的问题。