Jquery ajax适用于Chrome和Safari,但不适用于IE8和Firefox

Jquery ajax works in Chrome and Safari, but not in IE8 and Firefox

本文关键字:适用于 不适用 Firefox IE8 Safari ajax Chrome Jquery      更新时间:2023-09-26
$.ajax({
    type: "POST",
    url: "core/login.php",
    data: userInfo,
    contentType : "application/x-www-form-urlencoded; charset=UTF-8",
    success: function(msg){
        if ($.trim(msg) == "success")
        {
            $('#status').load('home.php #status'); //refresh status: now shows as logged in         
        }
        else
        {
            $('#error').html(msg); //this statement will execute whatever "$error" in login.php is, as html
            $('#error').fadeIn(500).show();
        }
    }

});

基本上,我有一个网站的登录表单。php处理userInfo(包含用户名和密码),然后返回"success"或"error"。如果成功,则显示用户已登录,而不刷新页面(只是刷新一个div)。如果失败,不刷新页面,显示错误的问题/失败是什么。

在Chrome和Safari中,一切都很好。但是在IE8和Firefox中,当出现登录错误时,用户会被重定向到显示错误的新页面(但我希望用户留在同一页面上,因此我使用Ajax)。当显示成功时,不是刷新状态div并显示登录后的状态,而是在新页面上再次显示"成功"消息。

如何解决这个问题,使在所有浏览器中,在整个登录过程中没有刷新?非常感谢!

使用e.preventDefault()防止触发默认动作。

的例子:

$("form").submit(function(e){
          e.preventDefault();
          $.ajax({
               //ajax code here
           });    
   });

这里是关于e.preventDefault的更多信息http://api.jquery.com/event.preventdefault/

编辑:

查看stackoverflow上的答案…

event.preventDefault()函数在IE中不起作用