Servlet不响应ajax请求

servlet not responding back to ajax request

本文关键字:请求 ajax 不响应 Servlet      更新时间:2023-09-26

servlet没有将响应发送回ajax代码。Plaease帮助! !

html代码,这里的输出应该打印出来

这是javascript中的ajax代码

 <script language="javascript">
    reqObj=null;
    function getPrice(){
        if(window.XMLHttpRequest){
              reqObj=new XMLHttpRequest();
           }else {
              reqObj=new ActiveXObject("Microsoft.XMLHTTP");
          }
            reqObj.onreadystatechange=process;

           var area = document.getElementById('product').value;
           var fType= document.getElementById('size').value;


         reqObj.open("POST","./getPricefromSize?pro="+area+"&size="+fType,true);
        reqObj.send(null);

    }
    function process1(){
        if(reqObj.readyState==4){
           var prce=reqObj.responseText;
           document.getElementById("price").innerHTML=prce;
        }
    }

    </script>
这是我的servlet代码:
  String str=request.getParameter("pro");
    String str1=request.getParameter("size");

     PrintWriter  out1=response.getWriter();

      System.out.println("pro: "+str+"size: "+str1);
        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
       con=DriverManager.getConnection("jdbc:odbc:linpaws","system","oracle");
       st=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
        rs=st.executeQuery("select price from labpro where usernm='"+labid+"' and product='"+str+"' and sze='"+str1+"'");
      rs.first();
        price=rs.getString(1);

        System.out.println("price"+price);
       out1.write(price);
       rs.close();
    st.close();

输出在控制台中打印。但是在ajax调用中没有显示

你的代码缺少了一些位:

xmlhttp.onreadystatechange=function()
 {
 if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
   }
 }
xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Henry&lname=Ford");

http://www.w3schools.com/ajax/ajax_xmlhttprequestrongend.asp应该会让你走上正确的道路。

它不起作用的另一个原因是你给onreadystatechange分配进程,例如onreadystatechange=process,但process必须完全匹配您分配的函数名称,在您的情况下是process1,因此代码将变为reqObj.onreadystatechange=process1