ajax post 提交 时 正常返回但是报:
[16:33:22.879] uncaught exception: [Exception... "prompt aborted by user" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource:///components/nsPrompter.js :: openTabPrompt :: line 462" data: no]
这个错误,用firebug 查看的时候显示如上错误信息,
该问题 主要为 用post提交表单的时候 和 用type=submit 提交表单的时候, 假如你想在 回调函数内部做一些事情的时候 尤其是你想往页面上输出一些 html div的时候,情况是不一样的
type=sumbit
是一次正常的提交,从发起请求到 response 回到页面上 也就是回到表单处 为一次完整的请求,就是说 请求必须response回到发起提交form的页面上,才算一次完整的请求
type=post
jquery post 请求的时候 请求的 完整 路径及应答也和上面一样,但是此刻我们想在回调函数内部做一些事情,所以也就不能让response的终点为页面上了(发起form的页面)而是应该在 jquery ajax 请求完成了之后用(return false语句) 将其拦截住
代码:
<script type="text/javascript">
var xmlHttp=null;
//创建XMLHttpRequest;
function init(){
if(window.XMLHttpRequest) { //Mozilla 浏览器
xmlHttp = new XMLHttpRequest();
alert("xmlhttpRequest")
}
else if (window.ActiveXObject) { // IE浏览器
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
alert("Msxml2.XMLHTTP")
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
alert("Microsoft.XMLHTTP")
} catch (e) {alert("浏览岂不支持")}
}
}
}
//回调函数
function callback(){
if(xmlHttp.readyState==4){
if(xmlHttp.status==200 ){
alert(xmlHttp.readyState);
alert(xmlHttp.responseText);
}
}
}
function processUser(){
alert("processUser");
var inputOneObj=document.getElementById('input_user');
var inputTwoObj=document.getElementById('input_cadno');
var inputThrObj=document.getElementById('input_pas');
var name=inputOneObj.value;
var id=inputTwoObj.value;
var pasd=inputThrObj.value;
//alert(opername);
init();
xmlHttp.onreadystatechange=callback;
var post="username="+name+"&cardno="+id+"&password="+pasd;
//servlet接受中文为乱码的解决方法,一定要编码(两次)。
post=encodeURI(post);
post=encodeURI(post);
var url="GuashiSevlet";
//post方式发送请求到url地址,true表示异步方式,false是同步方式
xmlHttp.open("POST",url, true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(post);
}
function checkuser(){
var input_obj1=document.getElementById('input_user');
var input_obj2=document.getElementById('input_cadno');
var input_obj3=document.getElementById('input_pas');
var user_name=input_obj1.value;
var user_cadno=input_obj2.value;
var user_pas=input_obj3.value;
if(user_name == ""){
alert("用户名不能为空!");
return false;
}
if(user_cadno == ""){
alert("卡号不能为空!");
return false;
}
if(user_pas == ""){
alert("密码不能为空!");
return false;
}
else{
processUser();
//千万不能少了,否则会报prompt aborted by user异常
return false;
}
}
</script>