2012-02-13 52 views
1

在我的网站我已经使用了下面的代码。但只有ajax工作如果我们添加警报。提交事件发生在ajax响应之前

$(document).submit(
     function(){ 

      if(document.getElementById('time_i').innerHTML != '') 
      { 
       var flag = false; 
       var str = document.getElementById("time_i").innerHTML; 
       if (window.XMLHttpRequest) 
        { xmlhttp=new XMLHttpRequest(); 
        } 
       else 
        { 
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
       xmlhttp.onreadystatechange=function() 
        { 
       if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        { 

        } 
        } 
       xmlhttp.open("GET","URL"+str,true); 
       xmlhttp.send(); 

       } 
     }); 

请为我提供解决方案。

+0

我不知道你的问题是什么。 – simchona 2012-02-13 05:23:20

+2

你显然不明白AJAX的“异步”部分。 – 2012-02-13 05:24:19

+0

我只想使用ajax在数据库中存储值。在提交事件但提交事件发生在AJAX呼叫响应之前...但如果我添加了响应警报,那么它将存储在数据库中,这意味着我们需要添加延迟,所以我们将在数据库中获得价值.. – Drupalrk 2012-02-13 05:28:03

回答

1

您应该将event添加到顶部函数声明的参数列表中,然后在if语句中写入event.preventDefault();。这将阻止表单更改您的页面。

如果你想改变页面,那么你可能不应该首先使用Ajax,而是一个普通的旧表单提交。

'AJAX'的'异步'方面是调用不会阻塞。它会立即返回,然后在完成后它会对函数执行回调,如果你给它一个。

+0

上面的代码不适用于我,因为用户没有重定向到下一页。就像下一个问题页面一样。 – Drupalrk 2012-02-13 05:45:20

+0

如果您希望用户自动被重定向,您需要为您的Ajax创建一个回调函数,Ajax请求完成时会调用该函数,Ajax请求可以将浏览器发送到下一页。当然,如果这就是你所做的一切,那么你实际上只是使用了错误的工具,而正确的工具就是放弃JavaScript(Ajax),而只是使用纯HTML提交表单。 – Kitsune 2012-02-13 05:51:47