今天用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>
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