如何使用Jquery将多个值传递给servlet [英] How to pass multiple values to servlet using Jquery
问题描述
我有一个Html表单,我需要使用jquery将值传递给servlet,并且它将验证信息并返回结果。但是当我尝试使用jQuery传递数据时。
显示接收到null值的servlet。
< div class =ulogin>
< h2>登入< / h2>
< div id =error>< / div>
< form action =Loginmethod =postid =spsignin>
< input type =textname =unameclass =text validate [required]id =nameplaceholder =Username/>
< input type =passwordname =passclass =text validate [required]id =passwordplaceholder =Password/>
< input type =submitvalue =id =memberlogin/>
< / form>
< / div>
我的javascript文件是
$(document).ready(function(){
//停止提交请求
$(#spsignin {
e.preventDefault();
});
//检查按钮点击事件
$(#memberlogin)。click(function( e){
//获取表单数据,然后序列化
dataString = $(#spsignin)。serialize();
dataString1 = $(#spsignin ).serialize();
var uname = $(input#name).val();
var pass = $(input#password).val() ;
$ .ajax({
type:POST,
url:Login,
data:'uname ='+ encodeURIComponent(uname)&'pass = '+ encodeURIComponent(pass),
dataType:json,
//如果收到服务器的响应
成功:function(data,textStatus,jqXHR){
if(data.success)
{
$(#error)。html(< div>< b> success!< / b>< / div> + data);
}
//显示错误信息
else {
$(#error)。html(< div>< b>信息无效!< b个;< / DIV>中+数据);
}
},
//如果服务器没有响应
error:function(jqXHR,textStatus,errorThrown){
console。日志(发生的事情真的很糟糕+ textStatus);
$(#error)。html(jqXHR.responseText);
},
//在将请求发送到服务器之前捕获请求
beforeSend:function(jqXHR,settings){
//禁用按钮直到我们获得响应
$('#memberlogin')。attr(disabled,true);
$,
完成:function(jqXHR,textStatus){
//启用按钮
$('#memberlogin')。attr(disabled,假);
}
});
});
});
而且servlet是
包skypark;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
$ b $ **
* Servlet实现类登录
* /
@WebServlet(/ Login)
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
布尔成功= true;
$ b $ **
* @ see HttpServlet#HttpServlet()
* /
public Login(){
super();
// TODO自动生成的构造函数存根
}
public static Connection prepareConnection()抛出ClassNotFoundException,SQLException
{
String dcn =oracle。 jdbc.OracleDriver;
String url =jdbc:oracle:thin:@ // localhost:1521 / skypark;
String usname =system;
String pass =tiger;
Class.forName(dcn);
返回DriverManager.getConnection(url,usname,pass); (HttpServletRequest请求,HttpServletResponse响应)
* /
protected void doPost(HttpServletRequest请求,HttpServletResponse响应)throws ServletException,IOException
{
String uname,pass;
response.setContentType(text / html);
PrintWriter out = response.getWriter();
response.setContentType(text / html);
response.setHeader(Cache-control,no-cache,no-store);
response.setHeader(Pragma,no-cache);
response.setHeader(Expires,-1);
response.setHeader(Access-Control-Allow-Origin,*);
response.setHeader(Access-Control-Allow-Methods,POST);
response.setHeader(Access-Control-Allow-Headers,Content-Type);
response.setHeader(Access-Control-Max-Age,86400);
uname = request.getParameter(uname);
pass = request.getParameter(pass);
布尔suc;
尝试{
suc = check(uname,pass);
out.println(suc);
} catch(ClassNotFoundException | SQLException e){
// TODO自动生成的catch块
e.printStackTrace();
}
out.flush();
out.close();
public Boolean check(String uname,String pass)throws SQLException,ClassNotFoundException
{
ResultSet rs = null;
int i = 0;
连接con = prepareConnection();
String Query =select uname,passmanager pass from pass =?;
PreparedStatement ps = con.prepareStatement(Query);
尝试
{
ps.setString(1,pass);
rs = ps.executeQuery(); $(rs.next())
{
if(uname.equalsIgnoreCase(rs.getString(uname))|| uname.equalsIgnoreCase(rs.getString( email)))
{
rs.close();
ps.close();
ps = null; con.close();
con = null;
成功= true;
i = 1;
休息;
}
}
}
catch(Exception e)
{
System.out.println(e);
}
if(i == 0)
{
success = false;
}
返回成功;
$ b保护无效doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException
{
doPost(request,response);
}
}
我认为jquery是错误的。请任何一位帮助我克服这一点......
问题出在这一行:
data:'uname ='+ encodeURIComponent(uname)&'pass ='+ encodeURIComponent(pass)
应该是
data:'uname ='+ encodeURIComponent(uname)+'&'+ 'pass ='+ encodeURIComponent(pass)
请注意,
I have an Html form from that i need to pass values to servlet using jquery and there it will validates the information and returns the result.But when i try to pass the data using jQuery. The servlet showing that null value received.
<div class="ulogin">
<h2>Login</h2>
<div id="error"></div>
<form action="Login" method="post" id="spsignin">
<input type="text" name="uname" class="text validate[required]" id="name" placeholder="Username"/>
<input type="password" name="pass" class="text validate[required]" id="password" placeholder="Password"/>
<input type="submit" value="" id="memberlogin"/>
</form>
</div>
My javascript file is
$(document).ready(function() {
//Stops the submit request
$("#spsignin").submit(function(e){
e.preventDefault();
});
//checks for the button click event
$("#memberlogin").click(function(e){
//get the form data and then serialize that
dataString = $("#spsignin").serialize();
dataString1 = $("#spsignin").serialize();
var uname = $("input#name").val();
var pass = $("input#password").val();
$.ajax({
type: "POST",
url: "Login",
data:'uname=' +encodeURIComponent(uname) &'pass=' + encodeURIComponent(pass),
dataType: "json",
//if received a response from the server
success: function( data, textStatus, jqXHR) {
if(data.success)
{
$("#error").html("<div><b>success!</b></div>"+data);
}
//display error message
else {
$("#error").html("<div><b>Information is Invalid!</b></div>"+data);
}
},
//If there was no resonse from the server
error: function(jqXHR, textStatus, errorThrown){
console.log("Something really bad happened " + textStatus);
$("#error").html(jqXHR.responseText);
},
//capture the request before it was sent to server
beforeSend: function(jqXHR, settings){
//disable the button until we get the response
$('#memberlogin').attr("disabled", true);
},
complete: function(jqXHR, textStatus){
//enable the button
$('#memberlogin').attr("disabled", false);
}
});
});
});
And the servlet is
package skypark;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Login
*/
@WebServlet("/Login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
Boolean success=true;
/**
* @see HttpServlet#HttpServlet()
*/
public Login() {
super();
// TODO Auto-generated constructor stub
}
public static Connection prepareConnection()throws ClassNotFoundException,SQLException
{
String dcn="oracle.jdbc.OracleDriver";
String url="jdbc:oracle:thin:@//localhost:1521/skypark";
String usname="system";
String pass="tiger";
Class.forName(dcn);
return DriverManager.getConnection(url,usname,pass);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String uname,pass;
response.setContentType("text/html");
PrintWriter out=response.getWriter();
response.setContentType("text/html");
response.setHeader("Cache-control", "no-cache, no-store");
response.setHeader("Pragma", "no-cache");
response.setHeader("Expires", "-1");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST");
response.setHeader("Access-Control-Allow-Headers", "Content-Type");
response.setHeader("Access-Control-Max-Age", "86400");
uname=request.getParameter("uname");
pass=request.getParameter("pass");
Boolean suc;
try {
suc = check(uname,pass);
out.println(suc);
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
out.flush();
out.close();
}
public Boolean check(String uname,String pass) throws SQLException, ClassNotFoundException
{
ResultSet rs = null;
int i=0;
Connection con=prepareConnection();
String Query="select uname,email from passmanager where pass=?";
PreparedStatement ps=con.prepareStatement(Query);
try
{
ps.setString(1,pass);
rs=ps.executeQuery();
while(rs.next())
{
if (uname.equalsIgnoreCase(rs.getString("uname")) || uname.equalsIgnoreCase(rs.getString("email")))
{
rs.close();
ps.close();
ps = null; con.close();
con = null;
success=true;
i=1;
break;
}
}
}
catch(Exception e)
{
System.out.println(e);
}
if(i==0)
{
success=false;
}
return success;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doPost(request,response);
}
}
I think error is with jquery. please any one help me to overcome from this...
The problem is with this line:
data:'uname=' +encodeURIComponent(uname) &'pass=' + encodeURIComponent(pass)
which should be
data: 'uname='+encodeURIComponent(uname)+'&'+'pass='+encodeURIComponent(pass)
note the missing +
after encodeURIComponent(uname)
这篇关于如何使用Jquery将多个值传递给servlet的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!