【问题标题】:Any reason why my $.ajax success callback is not executed in Jquery?为什么我的 $.ajax 成功回调没有在 Jquery 中执行?
【发布时间】:2011-01-17 18:33:52
【问题描述】:

今天我发现我的网站的开发版本不执行成功回调,但所有其他 javascript 和 jquery 代码运行良好。甚至我的 ajax 请求也被执行了,我可以在 firebug 中看到响应。

$('#login').submit(function(){
    var email = $('#l_email').val();
    var pass = $('#l_pass').val();
    if(email && pass != ''){
        var str = decodeURIComponent($(this).serialize());
        $.ajax({
            type: "POST",
            url: "login.php",
            data: str,
            success: function(msg){
                if(msg == 'OK'){
                    window.location = 'index.php'
                }else if (msg == 'NOT_OK'){
                    if(lang == 'lv'){
                        alert(message);
                    }else if(lang == 'ru'){
                        alert(message);
                    }
                }else if (msg == 'EMAIL_NOT_VALID'){
                    if(lang == 'lv'){
                        alert(message);
                    }else if(lang == 'ru'){
                        alert(message);
                    }      
                }
            }
         });
    }else{
        alert('That form is empty.');
    }
    return false;
});

问题是 $.ajax 部分执行良好,我可以在 firebug 中看到响应“OK”。但是重定向没有发生,即使我用 alert 或 console.log 之类的东西替换重定向,也没有出现。

是什么原因造成的?由于 firebug 没有给出错误,因此很难跟踪。

已解决: 根据 Reigel 的建议,将成功回调数据返回包装在 $.trim() 中;

【问题讨论】:

  • 当您执行alert(msg) 时,您是否获得了正确/预期的值?
  • 你为什么不实现错误:函数?也许有什么问题?
  • 什么意思?我的代码不会运行成功回调,因此永远不会触发警报。但是是的,msg 返回正常,如果没有执行。
  • 我同意,你确定它会进入 msg=='OK' 部分吗?也许您想发出警报并显示 msg 变量中的内容。
  • 我怀疑里面有“空格”,因为它是一个 html。试试success: function(msg){ var msg= $.trim(msg); ..... }

标签: jquery


【解决方案1】:

在你的成功函数的代码中添加一个else { alert('No match for msg'); } 块怎么样,也许你会看到 msg 与你的任何 IF 语句都不匹配。

jQuery doc 说成功函数的签名应该是:success(data, textStatus, XMLHttpRequest) 所以我猜如果不是得到响应状态而是得到数据的消息。

【讨论】:

  • msg 正在恢复正确的价值,但由于某种原因我不得不使用 $.trim(msg);所以它现在按预期工作。但问题是我已经使用该代码 2 个月没有 $.trim
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 2012-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多