Javascript $.ajax成功回调未在firefox中启动

Javascript $.ajax成功回调未在firefox中启动,javascript,jquery,ajax,firefox,cross-browser,Javascript,Jquery,Ajax,Firefox,Cross Browser,我遇到了一个问题,对$.ajax的调用成功完成并返回内容,firebug报告响应为200OK,但未执行成功、完成和错误回调。这只发生在firefox中,在chrome中工作正常,我正在运行firefox22 $.ajax(site_url+url+'/fetch_salt',{type:'POST',data:data,success:check_salt}); var group = ''; function check_salt(d) { console.log(d); fire

我遇到了一个问题,对$.ajax的调用成功完成并返回内容,firebug报告响应为200OK,但未执行成功、完成和错误回调。这只发生在firefox中,在chrome中工作正常,我正在运行firefox22

$.ajax(site_url+url+'/fetch_salt',{type:'POST',data:data,success:check_salt});
var group = '';

function check_salt(d)
{
    console.log(d);
firebug报告的请求的实际响应为:

choose_login:{"admin":"Admin Zone"}
和响应类型:

Content-Type    text/html
我曾尝试过在jquery假设json或其他情况下强制设置dataType和contentType,并尝试过匿名函数来处理错误、成功和完全回调,但没有任何效果

我正在发布完整的函数代码,以防出现某种语法错误:

function prep_login_form(elem,url,challenge)
{
    function show_error(msg)
    {
        $(elem).find('.ecms-error-for-password .ecms-error-text').html(msg).closest('.ecms-error-container').removeClass('ecms-error-hidden');
    }

    function submit()
    {
        var data = {email:$(elem).find('input[name="email"]').val()};
        data[csfr_token_name] = csfr_hash;
        $.ajax({type:'POST',url:site_url+url+'/attempt_login',data:data,success:check_salt});
        var group = '';

        function check_salt(d)
        {
            console.log(d);
            if (d=='no_email')
            {
                show_error('Invalid Email address');
            }
            else if (d=='account_disabled')
            {
                show_error('This account has been disabled, please contact your administrator');
            }
            else if (d.substr(0,12)=='choose_login')
            {
                var cl;
                eval('cl = '+d.substr(13));
                var cou = 0;
                for (p in cl)
                {
                    cou++;
                }
                if (cou==1)
                {
                    group = p;
                    var mydata = $.extend(data,{group:p});
                    $.ajax(site_url+url+'/fetch_salt',{type:'POST',data:mydata,success:check_salt})
                }
                else
                {
                    var str = '<div class="login-selection-popup"><p>We have detected that your email address is linked to more than one account.<br />Please select which zone you would like to login to.</p><ul class="choose-login-popup">';
                    for (p in cl)
                    {
                        str+='<li><a rel="'+p+'">'+cl[p]+'</a></li>';
                    }
                    str+='</ul></div>';
                    open_modal({heading:'Choose Account',content:str,buttons:function(close_modal)
                    {
                        $(this).find('.choose-login-popup').on('click','a',function()
                        {
                            group = $(this).attr('rel');
                            var mydata = $.extend(data,{group:$(this).attr('rel')});
                            $.ajax(site_url+url+'/fetch_salt',{type:'POST',data:mydata,success:check_salt})
                            close_modal();
                        });
                    }});
                }
            }
            else
            {
                var salt = d;
                var pw = $(elem).find('input[name="password"]').val();
                data.password = hex_md5(challenge+hex_md5(salt+pw));
                data.group = group;
                $.ajax(site_url+url+'/attempt_login',{type:'POST',data:data,success:function(d)
                {
                    if (d=='no_email')
                    {
                        show_error('Invalid username or password');//Invalid Email address
                    }
                    else if (d=='account_disabled')
                    {
                        show_error('This account has been disabled, please contact your administrator');
                    }
                    else if (d=='invalid_login')
                    {
                        show_error('Invalid username or password');//Email or Password did not match
                    }
                    else
                    {
                        window.location.href = d;
                    }
                }});
            }
        }
    }

    $(elem).on('keyup','input',function(e)
    {
        if (e.keyCode=='13')
        {
            submit();
        }
    });
    $(elem).find('.login-submit').on('click',function()
    {
        submit();
    });
}

对不起,最近我在电脑上安装了一些插件,我很想摆脱它。我认为它破坏/劫持了我的firefox。重新安装firefox后,问题消失,回调现在执行。

您是否尝试设置错误回调?可能您还没有注意到某个错误。我已经尝试了匿名函数来处理该错误,错误回调至少应该已经触发,即使它并不总是提供有用的信息。请尝试以下方法:$.ajax{type:'POST',url:site\u url+url+'/fetch\u salt',data:data,success:check\u salt};您好,就像我说的,我尝试过为error函数设置一个回调,它不会启动,而且它在任何情况下都会在chrome中执行成功回调。您是否尝试过在浏览器调试工具或Fiddler中监视网络流量以查看发生了什么?