Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用ajax如何将参数从一个jsp页面发送到另一个servlet_Javascript_Jsp_Servlets - Fatal编程技术网

Javascript 使用ajax如何将参数从一个jsp页面发送到另一个servlet

Javascript 使用ajax如何将参数从一个jsp页面发送到另一个servlet,javascript,jsp,servlets,Javascript,Jsp,Servlets,我正在使用azax动态更改jsp页面,我希望将该jsp页面中的数据发送到servlet。jsp代码: <input type="submit" oninput="loadXMLDoc(this.value)" value="ok" name="ok"> <div id="myDiv"> Insert Id:<input id="p1" type="text" name="edit1" value=""style="visibility:h

我正在使用azax动态更改jsp页面,我希望将该jsp页面中的数据发送到servlet。jsp代码:

<input type="submit" oninput="loadXMLDoc(this.value)" value="ok" name="ok">
    <div id="myDiv">  
        Insert Id:<input id="p1" type="text" name="edit1" value=""style="visibility:hidden" size="30"/>
    </div>
function loadXMLDoc(str){
    var xmlhttp;
    if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }else{// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function(){
    if (xmlhttp.readyState==4 && xmlhttp.status==200){
        document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
}
xmlhttp.open("POST","edit?q="+str,true);
xmlhttp.send();
}

插入Id:
函数loadXMLDoc(str){
var-xmlhttp;
if(window.XMLHttpRequest){//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}else{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;
}
}
open(“POST”,“edit?q=“+str,true”);
xmlhttp.send();
}
servlet代码:

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter(); Connection conn=null;
    String url = "jdbc:mysql://localhost:3306/";
    String dbName = "studentdatabase";
    String driver = "com.mysql.jdbc.Driver"; 
    String userName = "root"; 
    String password = "1234";
    String student=request.getParameter("str");
    Statement stmt;out.println(student);
    try {
        Class.forName(driver).newInstance();
        conn = DriverManager.getConnection(url+dbName,userName,password);
        String query = "select name1,telephone,email,department from studentinfo where studentid='"+student+"";
        stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery(query);
        while(rs.next()){
            String s = rs.getObject(1).toString();
            out.println("<p> " +s+ "</p>");
        }
        conn.close;
        //System.out.println("Disconnected from database");
    } catch (Exception e) {
    e.printStackTrace();
}
}
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
setContentType(“text/html;charset=UTF-8”);
PrintWriter out=response.getWriter();连接连接=null;
String url=“jdbc:mysql://localhost:3306/";
字符串dbName=“studentdatabase”;
String driver=“com.mysql.jdbc.driver”;
字符串userName=“root”;
字符串密码=“1234”;
字符串student=request.getParameter(“str”);
报表stmt;out.println(学生);
试一试{
Class.forName(driver.newInstance();
conn=DriverManager.getConnection(url+dbName、用户名、密码);
String query=“从studentinfo中选择名称1、电话、电子邮件、部门,其中studentid=”+student+”;
stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(查询);
while(rs.next()){
字符串s=rs.getObject(1.toString();
out.println(“”+s+“

”); } 康涅狄格州关闭; //System.out.println(“从数据库断开”); }捕获(例外e){ e、 printStackTrace(); } }

字符串student显示为
null
,即使数据库中有studentid=student的值。

由于使用HTTP-POST,您必须将参数放入send方法中

...
var params = "q="+str;
xmlhttp.open("POST", url, true);

xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("Content-length", params.length);
xmlHttp.setRequestHeader("Connection", "close"); 
xmlHttp.send(params);
...

您需要在服务器端代码中进行一些调试(或者至少告诉我们aobut it)——您看到了什么?+s+

能生产吗?如果您看到的是null

,那么您有一行,但其中的值为null……我尝试过这个方法,但它不起作用。它显示为null。+s+

。servlet代码应该是什么:String student=request.getParameter(“str”);可以吗?