最近在学AJAX,但是req.readyState和req.status始终不能传回正确的值,请教大神,代码附上
这个是网页端的JS脚本程序代码:varreq;functionRtoC(){varusername=document.getElementById("username")...
这个是网页端的JS脚本程序代码:
var req;
function RtoC(){
var username=document.getElementById("username").value;
var password=document.getElementById("password").value;
var password1=document.getElementById("password1").value;
if(password===password1&&password!=null)
{
var url = "signupservlet?username=" + encodeURI(username)+"&password="+encodeURI(password);
if (window.XMLHttpRequest) {
req = new XMLHttpRequest( );
}
else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("Get",url,true);
req.onreadystatechange = callbacksignstate( );
req.send(null);
}
else {alert("请输入正确的确认密码");}
}
function callbacksignstate( ) {
document.write(req.readyState+"/"+req.status);
if(req.readyState===4){
if(req.status===200){
alert("注册成功!");
window.location='Confirm.html';
}
}
}
然后是服务器端的servlet代码:
package SERVLET;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
public class signupservlet extends HttpServlet
{
@Override
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException
{
String username = req.getParameter("username");
String password = req.getParameter("password");
if (username!=null&&password !=null){
inputdata(username,password);
res.setContentType("text/html");
res.setHeader("Cache-Control", "no-cache");
res.getWriter( ).write("T"); }
else {
res.setContentType("text/html");
res.setHeader("Cache-Control", "no-cache");
res.getWriter( ).write("F");
}
}
public void inputdata(String username,String password) {
try {
Statement select =DatabaseConnector.getConnection().createStatement( );
int work = select.executeUpdate("insert into USERS values('" + username + "','"+password+"');");
}
catch (SQLException e) {
e.printStackTrace( );
}
}
}
以上是整个过程的不能实现这个传输的代码部分,我这个项目文件里面,有另外的一个脚本和另外的servlet,他们自己是完全没问题的,但是就以上部分有问题,请各位大师帮忙看看,我也是刚刚开始学AJAX技术,真心求教!!! 展开
var req;
function RtoC(){
var username=document.getElementById("username").value;
var password=document.getElementById("password").value;
var password1=document.getElementById("password1").value;
if(password===password1&&password!=null)
{
var url = "signupservlet?username=" + encodeURI(username)+"&password="+encodeURI(password);
if (window.XMLHttpRequest) {
req = new XMLHttpRequest( );
}
else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("Get",url,true);
req.onreadystatechange = callbacksignstate( );
req.send(null);
}
else {alert("请输入正确的确认密码");}
}
function callbacksignstate( ) {
document.write(req.readyState+"/"+req.status);
if(req.readyState===4){
if(req.status===200){
alert("注册成功!");
window.location='Confirm.html';
}
}
}
然后是服务器端的servlet代码:
package SERVLET;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.sql.*;
public class signupservlet extends HttpServlet
{
@Override
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException, IOException
{
String username = req.getParameter("username");
String password = req.getParameter("password");
if (username!=null&&password !=null){
inputdata(username,password);
res.setContentType("text/html");
res.setHeader("Cache-Control", "no-cache");
res.getWriter( ).write("T"); }
else {
res.setContentType("text/html");
res.setHeader("Cache-Control", "no-cache");
res.getWriter( ).write("F");
}
}
public void inputdata(String username,String password) {
try {
Statement select =DatabaseConnector.getConnection().createStatement( );
int work = select.executeUpdate("insert into USERS values('" + username + "','"+password+"');");
}
catch (SQLException e) {
e.printStackTrace( );
}
}
}
以上是整个过程的不能实现这个传输的代码部分,我这个项目文件里面,有另外的一个脚本和另外的servlet,他们自己是完全没问题的,但是就以上部分有问题,请各位大师帮忙看看,我也是刚刚开始学AJAX技术,真心求教!!! 展开
2个回答
展开全部
你在后台DEBUG一下,看看后台返回的值是什么,如果能正确执行到res.getWriter( ).write("T");或者res.getWriter( ).write("F");就说明后台代码没问题,然后在前端代码alert()一下从后台传过去的值能不能在前端获取就行了。
更多追问追答
追问
servlet我单独测试过,能正确返回值,数据库也能正确写入数据,不过就是状态值得不到!
追答
其实你可以选用jquery的ajax方式进行异步提交数据,你上面的方式是AJAX原始的方式,我基本上没怎么用,以前用过一次也是获取不到状态值,后来我直接在后台给它手工写了个状态让它返回。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询