Jsp 中的ajax

来源:互联网 发布:芝华仕沙发头等舱 知乎 编辑:程序博客网 时间:2024/04/30 20:48

今天用Jsp和ajax结合写了个小程序。下面是遇到的一些问题和解决方案,是为了自己的学习做笔记。

一、连接mysql数据库出现了问题,

检查下是否加入了mysql的jar包,要注意也要把这个jar加入到、tomcat的lib目录下。

二、ajax

应用ajax的步骤

1、创建XMLHttpRequest。要注意浏览器的兼容性问题:

 //创建XMLHttpRequest对象
function createXMLHttpRequest(){
if(typeof XMLHttpRequest !="undefined"){
return new XMLHttpRequest();
}else if(typeof ActiveXObject !="undefined"){
var versions = ["MSXML2.XMLHttp.6.0","MSXML.XMLHttp.3.0","MSXML2.XMLHttp"],
i,len;
for(i=0,len=versions.length;i<len;i++){
try{
new ActiveXObject(version[i]);
arguments.callee.activeXString = version[i];
break;
}catch(ex){

}
}
return new ActiveXObject(arguments.callee.activeXString);
}else{
throw new Error("No XHR object avaiable");
}


}

2、发送请求函数

先创建XMLHttpRequest对象,在调用对象的open(url,method,true),第一个参数是url地址,第二个是‘’get‘。或者“post”方法,第三个是表示是否为Asynchronous.

然后定义处理函数,processResponse ,在调用、send();

//发送请求函数
function sendRequest(url){
XMLHttpReq = createXMLHttpRequest();
//XMLHttpReq.open("post","SignUpAction",true);
XMLHttpReq.open("get",url,true);

XMLHttpReq.onreadystatechange = processResponse;
//XMLHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//XMLHttpReq.send('uname='+uname+'&psw'+psw);
XMLHttpReq.send(null);


}

3、处理函数定义(在本方法中还遇到了。XMLHttpRequest.responserXML为null的情况)

//处理返回信息
function processResponse(){
if(XMLHttpReq.readyState==4){
alert(XMLHttpReq.status==200);
if(XMLHttpReq.status==200){

//.getElementsByTagName("res")[0].firstChild.data;
var resText = XMLHttpReq.responseText;
alert(resText);
//var res = XMLHttpReq.responseXML;
//.getElementsByTagName().length;
var res = XMLHttpReq.responseXML.getElementsByTagName("res")[0].firstChild.data;
window.alert(res);
}else{
window.alert("你所请求的页面不存在");
}
}


}

4\事件处理函数 --------/注册函数,这个函数中通过sendRequest将参数传递到服务器端的servlet
function signUp(){

uname = document.myform.uname.value;
psw = document.myform.psw.value;
var psw2 = document.myform.psw2.value;

if(uname==""){
window.alert("用户名不能为空 ");
document.myform.uname.focus();
return false;
}
else if(psw!=psw2){
window.alert("两次输入的密码不相同 ");
document.myform.psw.focus();
return false;
}
else {

sendRequest('/SignUp/servlet1?uname='+uname+'&psw='+psw);

}
}

三、XMLHttpRequest.responserXML为null的情况,解决方法

1. 那就是没有设置返回的内容格式,只要在write前添加response.setContentType("text/xml;charset=utf-8");就可以了

2. xml的内容格式不正确,可以通过将xml的内容输出,好好检查xml的格式是否正确

还有就是XML格式内容前不能有其他的内容输出

四、servlet配置出现问题

出现404错误

是servelt 的、<url-pattern>配置出现问题

在<url-pattern>中要有可以写

 <servlet-mapping>
  <servlet-name>SignUpAction</servlet-name>
    <url-pattern>/servlet1</url-pattern>
 </servlet-mapping>

但在jsp文件中时 要这样:

sendRequest('/SignUp/servlet1?uname='+uname+'&psw='+psw);

前面要加上项目的名字。

五,MySql中自动增长字段

create table user(id int(10) not null auto_increment,

name varchar(20) )

aut0_increment=200;

insert into user values(null,"n");

自动增长字段从200开始,插入时,自动增长字段可以插入null。


六、当出现undefined is not  a function时要检查函数内部是否语法错误。比如调用了没有大属性或者方法等。

七、加载图片时,会出现readyState缓慢的出现4的情况。

八、js中null和undefined的区别

undefined(不存在)出现的情况:1、变量没有申明或者初始化;2、对象没有该属性

null出现的情况:1、变量存在但是没有初始化2、赋值为null

一个对象中没有指定的变量,而要使用,会出现 undefined 
Html中没有的元素,通过document.getElementById("")查找的结果为: null 
Html中有的元素,但是没有任何值,通过document.getElementById("")查找的结果为:” ”; 不是null 


0 0