2014-07-22 209 views
1

您好,我有这样的代码发送Ajax请求

<button onclick="sbt()" name="step1[save]" type="submit" class="btn-type5 next-btn-form pie" value="Далее">Send</button> 
function sbt(){ 
var phone = document.getElementById('fld1').value; 
     var xmlhttp; 
     if (window.XMLHttpRequest) 
     { 
       xmlhttp=new XMLHttpRequest(); 
     } 
     else 
     { 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     }} 
     xmlhttp.open("GET","host.com/send.php?phone="+phone+"&t="+Date.now(),true); 
     xmlhttp.send(); 
} 

我想给这个请求的异步,但是当我使用xmlhttp.open(...,...,true)申请好好尝试一下,即使去到服务器,我看它在谷歌浏览器的控制台,而是如果我运行sbt()功能从控制台请求确定,如果我使用xmlhttp.open(...,...,false)它工作正常,有人可以帮助我吗?谢谢。

+0

你读过“如何从返回一个Ajax调用的响应”的问题? –

+0

我不需要回复我只需要发送请求。 –

+1

您确实在'host.com'之前缺少一个报价,或者是复制/粘贴错误? –

回答

2

提交按钮将立即提交它所在的表单,并且浏览器将离开页面(以及正在进行Ajax请求的JavaScript执行环境)。

取消表单提交的默认行为,当你想使用JavaScript代替。

onclick="sbt(); return false;" 

(我想看看使用的modern approach to event binding代替onclick属性虽然)。

+0

hm请求转到服务器,但它应该在按钮单击后进入另一个页面,但它保持在同一页面 –

+1

使用Ajax的要点是保持在同一页面上。如果您想要转到其他网页,请使用提交表单的URL来处理所有功能,而不是在多个HTTP请求之间进行拆分。 – Quentin

1

这是你的整个页面的代码?

你检查了jscript的加载顺序吗?

请看一看这个--->fiddle(这有一个3秒的响应延迟)

<h2>AJAX async demo</h2> 

<button type="button" onclick="callAjax()">Request data</button> 
<div id="testDiv"></div> 

<script> 
function callAjax() { 

    var xmlhttp; 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange = function() { 

     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("testDiv").innerHTML = xmlhttp.responseText; 
     } 
    }; 

    xmlhttp.open("POST", "/echo/html/", true); 
    var params = "html=test&delay=3" 
    xmlhttp.send(params); 
} 
</script>