簡體   English   中英

servlet沒有響應Ajax請求

[英]servlet not responding back to ajax request

servlet沒有發送回對ajax代碼的響應。 請幫助!!!

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_xmlhttprequest_send.asp應該會讓您走上正確的道路。

它不起作用的另一個原因是您為onreadystatechange分配的進程,例如onreadystatechange=process但是process必須與您分配的函數的名稱完全匹配,在您的情況下,該名稱為process1因此代碼將變為reqObj.onreadystatechange=process1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM