Java 我能';t使用ajax通过webservice删除或插入数据库中的数据

Java 我能';t使用ajax通过webservice删除或插入数据库中的数据,java,ajax,postgresql,Java,Ajax,Postgresql,这是我的test_database.html页面 <html> <head> <title> <h1> Database Test </h1> </title> <script> var xmlhttp; if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else {

这是我的test_database.html页面

<html>
<head> 
<title> <h1> Database Test </h1> </title>
<script>

    var xmlhttp;
    if (window.XMLHttpRequest) 
    {
        xmlhttp = new XMLHttpRequest();
    } else 
    {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    function loadXMLDoc()
    {
        xmlhttp.onreadystatechange = function() 
        {
            if (xmlhttp.readyState==4 && xmlhttp.status==200) 
            {
                var xmlObj = xmlhttp.responseXML;

                var textXML = xmlObj.documentElement.firstChild.firstChild.nodeValue;


                if (window.DOMParser)
                {
                    parser=new DOMParser();
                    var xmlDoc=parser.parseFromString(textXML,"text/xml");
                }
                else // Internet Explorer
                {
                    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                    xmlDoc.async=false;
                    xmlDoc.loadXML(textXML);
                }   
                var rows = xmlDoc.getElementsByTagName("row");
                mybody=document.getElementsByTagName("body")[0];
                mytable=document.createElement("table");
                mytablebody=document.createElement("tbody");
                //alert(cols.length);
                for(var i=0; i<rows.length; i++)
                {   mycurrent_row=document.createElement("tr"); 
                    var cols=rows[i].getElementsByTagName("colunm");

                   for(var j=0; j<cols.length; j++) 
                    {     mycurrentcell=document.createElement("td");  
                          currenttext=document.createTextNode(cols[j].getAttribute("colvalue"))
                          mycurrentcell.appendChild(currenttext);
                          mycurrent_row.appendChild(mycurrentcell);  
                     }  
                                     mycurrent_row.id=cols[0].getAttribute("colvalue");
                         mybutoncell = document.createElement("td");
                         but=document.createElement("input");
                         but.type="button";
                         mybutoncell.appendChild(but);                                      
                         mycurrent_row.appendChild(mybutoncell); 
                         mytablebody.appendChild(mycurrent_row);
                         but.onclick=ajaxDBDelete;
                }
                mytable.appendChild(mytablebody);
                mybody.appendChild(mytable);
                 mytable.setAttribute("border","2");    
            }
        }
        xmlhttp.open("GET","http://127.0.0.1:8080/axis2/services/database_tmm_man/SelectFromDB?",true);
        xmlhttp.send();

    }       
    function ajaxDBInsert ()
    { 
     var textvalue= document.getElementById('txbegn').value
       var xml="<university><student>";
       xml+="<egn>" +textvalue+ "</egn>";
       xml+="<fname>" + document.getElementById('txbfname').value + "</fname>";
       xml+="<mname>" + document.getElementById('txbmidname').value + "</mname>" ;
       xml+="<lname>" + document.getElementById('txblname').value + "</lname>";
       xml+="<telnum>" + document.getElementById ('txbtelnum').value + "</telnum>";
       xml+="</student></university>";

    alert(xml);
    var tranXml = escape(xml); 
    alert(tranXml);

        var url = "localhost/services/database_tmm_man/InsertInto?";
        var params = "data=" + tranXml;
        xmlhttp.open("POST", url, true);
        xmlhttp.send(params);   


    }

    function ajaxDBDelete()
    {
          var par=this.parentNode;
          while(par.nodeName.toLowerCase()!='tr')
          {
              par=par.parentNode;
          }
          alert (par.id);
         var delid="<university><student>";
         delid+= "<egn>" + par.id + "</egn>";
         delid+= "</student></university>";
         alert(delid);
         var tranDelid = escape(delid);
         alert (tranDelid);

        var url = "http://127.0.0.1:8080/axis2/services/database_tmm_man/DeleteFromDB?";
        var params = "deleteID=" + tranDelid;
        xmlhttp.open("POST", url, true);
        xmlhttp.send(params);   
    }
    </script>
</head>

<body onload="loadXMLDoc();">

EGN:                  <input type="text" id="txbegn"/><br>
FIRST NAME:           <input type="text" id="txbfname"/><br>
MIDDLE NAME:          <input type="text" id="txbmidname"/><br>
LAST NAME:            <input type="text" id="txblname"/><br>
Telephone Number:     <input type="text" id="txbtelnum"/><br>
<br>
<br>
<button type="button" name="btnInsert" onClick="ajaaclxDBInsert();">INSERT</button>
<br>
<br>
</body>
</html>

数据库测试
var-xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=新的XMLHttpRequest();
}否则
{
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
函数loadXMLDoc()
{
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
var xmlObj=xmlhttp.responseXML;
var textXML=xmlObj.documentElement.firstChild.firstChild.nodeValue;
if(window.DOMParser)
{
parser=新的DOMParser();
var xmlDoc=parser.parseFromString(textXML,“text/xml”);
}
else//internetexplorer
{
var xmlDoc=新的ActiveXObject(“Microsoft.XMLDOM”);
xmlDoc.async=false;
loadXML(textXML);
}   
var rows=xmlDoc.getElementsByTagName(“行”);
mybody=document.getElementsByTagName(“正文”)[0];
mytable=document.createElement(“表格”);
mytablebody=document.createElement(“tbody”);
//警报(列长);

对于(var i=0;i您确定您的Ajax调用是正确的还是完全正确的?因为您是在原始Javascript中构造调用的,您是否在多个浏览器中进行了测试?有一些很好的Chrome扩展允许您手工构造REST调用,以测试Web服务是否在浏览器文档上下文之外正常工作(我使用一个名为Graphic HHTP client的程序,但我认为它只适用于Mac)


这样做至少可以帮助您确定问题是服务器端还是客户端。

尝试在catch()语句中添加一些错误处理,也许?catch(异常ex1){ex1.printStackTrace();}也许吧?事实上,我几乎可以肯定我的ajax调用不是很好!因为我已经测试了我的服务器端代码,在我编写的过程中,它工作得非常完美!我认为问题在于调用!我第一次这样做,我不知道如何测试它,因为这是我唯一没有测试的东西。我会使用类似JQuery的东西来进行ajax调用如果我是你的话,就不用自己滚动;错误处理是内置的。我不想说,但我同意Gimby的观点,如果你刚开始,你最好使用一个库来处理浏览器实现中的差异。(即使你不是刚开始,我仍然会说它更好,为什么要重新发明轮子?).是的,我理解,但我的任务是用javascript!没有其他方法!Helo我想说我解决了这个问题!我使用了GET方法而不是post!
package gismo;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.net.URLDecoder;
import java.sql.*;

import javax.xml.parsers.*; 

import org.w3c.dom.*;
import org.xml.sax.InputSource;


public class database_tmm_man 

{

    Connection conn= null;
    String strEgnin;
    String strFname;
    String strMname;
    String strLname;
    String strNumtel;
    String strEgndel;

public String SelectFromDB()
{

    String strXml = "<response>";


        try {
            Class.forName("org.postgresql.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try 
        {
            conn= DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/plovdivbizlocator", "postgres", "********");
        } 

        catch (SQLException ex) 
        {

            ex.printStackTrace();
        }

        Statement mystmt = null;
        String selectQuery = "SELECT egn, firstname, middlename, lastname,telnumber FROM tanya_students";
        try 
        {
            mystmt = conn.createStatement();
            ResultSet mysr = mystmt.executeQuery(selectQuery);  

            ResultSetMetaData rsmd = mysr.getMetaData(); 
            int colCount = rsmd.getColumnCount();
                int numberrow=0;

            strXml += "<rows>";
            while (mysr.next())
            {  
                strXml += "<row id= '"+numberrow +"'>";
                for (int i=1;i<=colCount;i++) 
                {
                    String elementname = rsmd.getColumnName(i);
                    String elementValue=mysr.getString(i);
                    strXml += "<colunm colname='"+elementname+"' colvalue='"+elementValue+"'/>";
                }                   
                numberrow++;
                strXml +="</row>";
            }
            strXml += "</rows>";                

        }
        catch(Exception ex)
        {}
        strXml+="</response>";

        return strXml;


}


public String InsertIntoDB (String data) throws ClassNotFoundException
{

    try
        {   String strDecodedData = URLDecoder.decode(data);
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
            Document doc = dbBuilder.parse(new InputSource(new ByteArrayInputStream(strDecodedData.getBytes("utf-8"))));
            doc.getDocumentElement().normalize();

            NodeList nList = doc.getElementsByTagName("student");
            int num=nList.getLength();
            for (int i=0;i<num;i++)
                        {       
                            Element section=(Element)nList.item(i);                     
                            strEgnin = section.getElementsByTagName("egn").item(0).getChildNodes().item(0).getNodeValue();              
                            strFname = section.getElementsByTagName("fname").item(0).getChildNodes().item(0).getNodeValue();             
                            strMname = section.getElementsByTagName("mname").item(0).getChildNodes().item(0).getNodeValue();            
                            strLname = section.getElementsByTagName("lname").item(0).getChildNodes().item(0).getNodeValue();                
                            strNumtel =section.getElementsByTagName("telnum").item(0).getChildNodes().item(0).getNodeValue();

                        }
        }

    catch (Exception ex1)
         {

         }

    Connection conn= null;

    Class.forName("org.postgresql.Driver");
    try 
    {
        conn= DriverManager.getConnection("jdbc:postgresql:/127.0.0.1:5432/plovdivbizlocator", "postgres", "********");
    } 

    catch (SQLException ex) 
        {

            ex.printStackTrace();
        }

    PreparedStatement pstmt = null;
    String insertQuery= "insert into tanya_students (egn, firstname, middlename, lastname, telnumber)";
    insertQuery +="values (?, ?, ?, ?, ?)";
    try
        {
            pstmt=conn.prepareStatement(insertQuery);
            pstmt.setString(1,strEgnin);
            pstmt.setString(2,strFname);
            pstmt.setString(3,strMname);
            pstmt.setString(4,strLname);
            pstmt.setString(5,strNumtel);
            pstmt.executeUpdate();
        }

    catch (Exception ex)
        {

        }

    return "" ;
}
public String DeleteFromDB(String deleteID) 
{
    try
    {   String strDecodeddelID = URLDecoder.decode(deleteID);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
        Document doc = dbBuilder.parse(new InputSource(new ByteArrayInputStream(strDecodeddelID.getBytes("utf-8"))));
        doc.getDocumentElement().normalize();

        NodeList nList = doc.getElementsByTagName("student");
        int num=nList.getLength();
        for (int i=0;i<num;i++)
                    {       
                        Element section=(Element)nList.item(i);                     
                        strEgndel = section.getElementsByTagName("egn").item(0).getChildNodes().item(0).getNodeValue();                 


                    }
    }

catch (Exception ex1)
     {

     }






  Connection conn= null;

    try 
    {
        Class.forName("org.postgresql.Driver");
    } 

    catch (ClassNotFoundException e) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    try 
    {
        conn= DriverManager.getConnection("jdbc:postgresql:/127.0.0.1:5432/plovdivbizlocator", "postgres", "********");
    } 

    catch (SQLException ex) 
        {

            ex.printStackTrace();
        }

    PreparedStatement delstmt = null;
    String delQuery= "DELETE FROM tanya_students WHERE egn= ?";
    try
        {
            delstmt=conn.prepareStatement(delQuery);
            delstmt.setString(1,strEgndel);
            delstmt.executeUpdate();
        }

    catch (Exception ex)
        {

        }

    return "" ;

}




}