2012-01-03 2 views
2

в моем ответе кодаText не работает. Предполагается отображать, текст, введенный в текстовое поле + «: Ваш запрос был замечен 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

+0

указывает на ошибку в строке, когда readistate равен 4 document.getElementById ("target"). InnerHTML = xmlHttpRequest.responseText; – dotnetrocks

+1

... какая ошибка? – Amadan

ответ

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

+0

Изменено. Спасибо @hollandben. –

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

Смежные вопросы