ajax post提交数据, input type=submit 返回prompt aborted by user .

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> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值