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

时间:2014-07-16 01:59:24

标签: javascript jquery html ajax login-script

$.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();
        }

    }


});

基本上,我有一个网站的登录表单。 login.php处理userInfo(包含用户名和密码),然后返回" success"或"错误"。如果成功,则在不刷新页面的情况下将用户显示为已登录(只需刷新div)。如果失败,则无需刷新页面,显示错误/失败的原因。

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

如何解决此问题,以便在所有浏览器中,在整个登录过程中无刷新?非常感谢你!

1 个答案:

答案 0 :(得分:0)

使用e.preventDefault()来阻止触发默认操作。

实施例

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

以下是有关e.preventDefault的更多信息 http://api.jquery.com/event.preventdefault/

编辑:

在stackoverflow上查看这个答案..

event.preventDefault() function not working in IE

相关问题