为什么ajax不起作用,除非我刷新或使用location.href

Why ajax doesn't work unless I refresh or use location.href?

本文关键字:location href 刷新 非我 ajax 不起作用 为什么      更新时间:2023-09-26

我正在做一个html项目,最终将由Phonegap打包。所以我正在尝试将数据从 html 表单编码为 JSON 格式,然后使用 ajax 发送到驻留在服务器上的 php 文件,并接收响应以执行其他操作。

现在我在索引中使用<a href='login.html'>.html打开登录页面。在我的登录页面中,我有这个

<script>
        $(document).ready(function(e) {                
            $('#loginform').submit(function(){
                var jData = { "email": $('#emailLogin').val(), "password": $('#Password').val()};
                $.ajax({                                      
                  url: 'PHP/login.php',
                  type:'POST',                           
                  data: jData,                                          
                  dataType: 'json',
                  async: false,
                  error: function(xhr,status){
                        //reload();
                        location.href='index.html';
                        alert('Wrong email and password');
                  },
                  success: function(data){
                      if(data[1] == 1){
                          var Id_user = data[0];
                          location.href='loginSuccess.html';
                      }
                  }
                }); 
            });
        });
    </script>

将我的数据发送到服务器。但是我发现它不起作用,它仍然在登录页面中。我尝试输入数据并再次提交,但仍然没有任何反应。在我刷新登录页面并再次输入数据之前,它可能会给出错误消息或转到登录成功页面。但是,当我使用<script> function loadLogin(){ location.href='login.html'; } </script>打开登录页面时,一切正常。

那么是什么原因造成的呢?如何修改这段代码以使其更好?

你正在使用jquery mobile吗?

我遇到了同样的问题。

jQuery mobile有一个全局配置选项:ajaxEnabled,默认值为true。

它将自动处理通过 Ajax 的链接点击和表单提交。

我认为您可以设置 false 以将网址加载为常规 http 请求。

<script src="jquery.js"></script>
<script>
    $(document).bind('mobileinit', function() {
        $.extend($.mobile, {
            ajaxEnabled: false
        });
    });
</script>
<script src="jquery-mobile.js"></script>

希望对您有所帮助。