Javascript 如何使用ajax传递单个参数并获取多个值?
在我的java项目中,我使用的是jsp页面。这里我只传递一个参数,我想从数据库中检索多个(3)值。我只知道如何传递和获取单个参数。但我不知道如何通过传递单个参数来获得多个值。我的ajax代码如下:Javascript 如何使用ajax传递单个参数并获取多个值?,javascript,java,ajax,Javascript,Java,Ajax,在我的java项目中,我使用的是jsp页面。这里我只传递一个参数,我想从数据库中检索多个(3)值。我只知道如何传递和获取单个参数。但我不知道如何通过传递单个参数来获得多个值。我的ajax代码如下: var request; function sendInfo1() { var v = document.Example.wayid.value; // var url = 'Showroutelink.jsp?val='+v+'&start='+v1+'&end='+
var request;
function sendInfo1() {
var v = document.Example.wayid.value;
// var url = 'Showroutelink.jsp?val='+v+'&start='+v1+'&end='+v2;
var url = 'Showroutelink.jsp?val='+v;
if (window.XMLHttpRequest) {
request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
try {
request.onreadystatechange = getInfo1;
request.open("GET", url, true);
request.send();
} catch (e) {
alert("Unable to connect to server");
}
}
function getInfo1() {
if (request.readyState == 4) {
var val = request.responseText.split('|');
document.getElementById("start").innerHTML = val[0];
document.getElementById("end").innerHTML = val[1];
document.getElementById("waypoints").innerHTML = val[2];
}
}
This is My Setver side Java code
<%
String R_Name=request.getParameter("val");
int w_id=0;
String wplist = "";
// String R_Name = request.getParameter("way");
try {
String buffer = "<select name='state'>";
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/googlemap", "root",
"root");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select start from route where Route_Name='" + R_Name + "'");
while (rs.next()) {
String Startval = rs.getString("start");
buffer = buffer + "<option value='" + Startval + "'>" + Startval + "</option>";
}
buffer = buffer + "</select>";
response.getWriter().println(buffer);
} catch (Exception e) {
}
try {
String buffer1 = "<select name='state'>";
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost/googlemap", "root",
"root");
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select end from route where Route_Name='" + R_Name + "'");
while (rs.next()) {
String Endval = rs.getString("end");
buffer1 = buffer1 + "<option value='" + Endval + "'>" + Endval + "</option>";
}
buffer1 = buffer1 + "</select>";
response.getWriter().println(buffer1);
} catch (Exception e) {
}
try {
String buffer2 = "<select name='state'>";
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con1 = DriverManager.getConnection("jdbc:mysql://localhost/googlemap", "root",
"root");
Statement st1 = con1.createStatement();
ResultSet rs1 = st1.executeQuery("select wplist from route where Route_Name='" + R_Name + "'");
while (rs1.next()) {
wplist = rs1.getString("wplist");
String wplist1[] = wplist.split("/");
buffer2 = buffer2 + "<option value='" + wplist1 + "'>" + wplist1 + "</option>";
}
buffer2 = buffer2 + "</select>";
response.getWriter().println(buffer2);
} catch (Exception e) {
}
%>
var请求;
函数sendInfo1(){
var v=document.Example.wayid.value;
//var url='Showroutelink.jsp?val='+v+'&start='+v1+'&end='+v2;
var url='Showroutelink.jsp?val='+v;
if(window.XMLHttpRequest){
请求=新的XMLHttpRequest();
}else if(window.ActiveXObject){
请求=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
试一试{
request.onreadystatechange=getInfo1;
打开(“获取”,url,true);
request.send();
}捕获(e){
警报(“无法连接到服务器”);
}
}
函数getInfo1(){
if(request.readyState==4){
var val=request.responseText.split(“|”);
document.getElementById(“开始”).innerHTML=val[0];
document.getElementById(“end”).innerHTML=val[1];
document.getElementById(“航路点”).innerHTML=val[2];
}
}
这是我的设置端Java代码
如果我答对了您的问题,您会问如何在请求中放置多个查询参数
查询参数的结构如下:
Showroutelink.jsp?key\u 1=value\u 1&key\u 2=value\u 2&key\u n=value\u n
所以你必须遵循这个模式
如果您询问如何从服务器调用返回多个值,请尝试使用JSON。如果ajax调用返回的数据是JSON字符串,即(
responseText='{“name”:“John”,“age”:30,“city”:“New York”}'
),则可以使用以下内容:
function getInfo1() {
if (request.readyState == 4) {
var val = request.responseText;
var obj = JSON.parse(request.responseText);
document.getElementById("start").innerHTML = obj.start;
document.getElementById("end").innerHTML = obj.end;
document.getElementById("waypoints").innerHTML = obj.waypoints;
}
}
如果您能提供ajax调用返回的响应,我可以更好地回答您的问题。我没有完全理解这个问题,因为您没有共享java代码。但在JS中,您始终可以创建一个数组并将其分配给url。 var v=[para1,para2,para3] 我认为这应该行得通。 创建一个数组
var v= [];
然后添加所有参数
v.push(document.Example.wayid1.value);
v.push(document.Example.wayid2.value);
v.push(document.Example.wayid3.value);
然后像这样添加到URL
var url = 'Showroutelink.jsp?val=' + v.toString();
在java端,您应该能够获得
String[] routeNames=request.getParameter("val");
\\in case error occurs use
String[] routeNames=request.getParameter("val").split(",");
还有一件事,不要使用带有“=”use“in”的where子句,只需在resultset中循环。使用数组怎么样?看看JSON。。。它使AJAX请求更容易…请提供AJAX调用返回的示例响应,以便我可以更新我的答案。我为我的问题找到了解决方案。我刚刚编辑了正确的ajax代码。是的,亲爱的泽山,你是对的。我在问如何通过响应。没有多个查询参数当然,亲爱的开发人员。我将使用JSONDear Ashish!进行尝试!。。我通过发布服务器端java代码编辑了我的问题。请访问并澄清我的疑问