0

我有一个简单的 jsp 页面,它向 servlet 发送 ajax 请求并等待响应。不幸的是,经过多次尝试,它没有收到响应。正在传输 ajax 请求,但未收到响应。

截至目前,我的页面中有一个下拉菜单和一个文本框。我正在尝试将下拉列表中选择的值打印在下拉列表的“onchange”事件的文本框中。这是我的代码。非常欢迎对此提供任何帮助。

页面

 <script>            
 function ajaxrequest(){ return new XMLHttpRequest();}        
 function ac()
   {
     var myajaxrequest = new ajaxrequest();
     if(myajaxrequest==null){alert("AJAX NOT WORKING");}         
     else
       {
         alert("AJAX WORKING");                 
         var ind2=document.getElementById("dd1").value;
         myajaxrequest.onreadystatechange=connection;                   
         myajaxrequest.open("GET", "../ajaxservlet?dd1="+ind2,true );
         myajaxrequest.send(null);
       }
    }

 function connection()  
   {               
     if(myajaxrequest.readyState==4)  
        {  
          var x=myajaxrequest.responseText; 
          document.getElementById("result").innerHTML = x;
        }  
   }  
 </script>
 <body>
   <form id = "form1" name ="form1" >
      <select id="dd1" name="dd1" onchange= "ac()">
        <option>Please select </option>
        <option>ankur</option>
        <option>akshay</option>
      </select>
      <input type="text" id="result" name="result" /> 
   </form>
 </body>

伺服器:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws     ServletException, IOException {

  System.out.println("hitting servlet");
  String abc = request.getParameter("dd1");
  System.out.println(abc);
  PrintWriter pw=response.getWriter();  
  response.setContentType("text/html");  
  pw.println(abc);
  }

在下拉列表中选择的值将打印在控制台中,但不会被传回。谢谢你的时间。

4

2 回答 2

1

myajaxrequestac()由于您使用了var关键字,因此对于函数来说是本地的。您无法在connection()函数中访问它。

尝试在其connection()内部声明您的函数ac()

不用检查 的状态readyState,使用 XHR 级别 2,您可以简单地将处理程序附加到onload事件。

顺便说一句,如果XHR不支持nativeajaxrequest()将引发错误;它不会返回 null。

于 2013-10-18T07:03:02.300 回答
0

尝试myajaxrequest全局初始化。

于 2013-10-18T07:09:46.487 回答