2012-01-03 92 views
2

在我的代码中responseText不起作用。它应该显示,文本在文本框中+进入“:您的申请已经看到由SYAM”responseText - XMLHttpRequest

<html> 
    <head id="Head1" runat="server"> 
    <title></title> 
     <script type="text/javascript"> 
      var xmlHttpRequest; 
      function sSignature(str) { 

       xmlHttpRequest = new XMLHttpRequest(); 
       xmlHttpRequest.onreadystatechange = function() { 
        if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {     
         document.getElementById("target").innerHTML = xmlHttpRequest.responseText; 
        } 
       } 
       xmlHttpRequest.open("GET", "AjaxResponse.aspx?q=" + str, true); 
       xmlHttpRequest.send(); 
      } 
     </script> 
    </head> 
    <body> 
     <form id="form1" runat="server"> 
      <div> 
      enter a string :<input type="text" id="textbox" onkeyup="sSignature(this.value)"/> 
      <span id="target">text should change here</span> 
      </div> 
     </form> 
    </body> 
</html> 

在代码隐藏页中的Page_Load()

string sRequest = Request.QueryString["q"]; 
var sResponse = sRequest+ " :Your request has been seen by syam"; 
Response.Write(sResponse); 
+1

你可以做得比“不工作”更好?网络流量检查员说什么?控制台中是否有错误?你有没有试图看看它在错误出现之前在代码中有多远? – Amadan 2012-01-03 08:50:27

+0

当readystate为4时,它在行中发生错误document.getElementById(“target”)。innerHTML = xmlHttpRequest.responseText; – dotnetrocks 2012-01-03 09:03:48

+1

...哪个错误? – Amadan 2012-01-03 09:04:56

回答

3

我相信错误在您的onreadystatechangedhandler。它将收到event参数,其中target属性指向XHR实例。

尝试用这种交换出来:

xmlHttpRequest.onreadystatechange = function (event) { 
    var xhr = event.target; 

    if (xhr.readyState === 4 && xhr.status === 200) { 
     document.getElementById("target").innerHTML = xhr.responseText 
    } 
}; 
+0

将'xhr.responseCode'更改为'xhr.status' – hollandben 2012-10-11 15:30:01

+0

已更改。谢谢@hollandben。 – 2012-10-11 18:38:10

1

送你请求优先

function sSignature(str) { 

    xmlHttpRequest = new XMLHttpRequest(); 
    xmlHttpRequest.open("GET", "AjaxResponse.jsp?q=" + str, true); 
    xmlHttpRequest.send(); 
    xmlHttpRequest.onreadystatechange = function() { 
     if (xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200) {     
      document.getElementById("target").innerHTML = xmlHttpRequest.responseText; 
     } 
    } 

} 
0

记住,你的代码将无法在Microsoft Internet Explorer中运行。

其次,修改一行代码,使其更好看 -

xhr.send()通过xhr.send(null);

+1

为什么使用'xhr.send(null)'而不是'xhr.send()'? – amn 2016-06-24 19:49:28

相关问题