fys124974704 发表于 2013-1-23 02:50:42

Ajax-Post异步提交(笔记)

一个考试系统的部分代码,功能是异步提交答案!
曾经遇到的问题:1.异步提交,2.IE不支持中文,3.提交的数据量过多丢失,本文已经解决了三个这样的问题
 

var http_request = false;var promptid = false;       function save(examPaperidDetailID,answerid,promptid_,submitButtonFlag,scoreid){document.getElementById(promptid_).innerHTML = '保存中......';   //提示promptid = promptid_;var score = 0;if (document.getElementById(scoreid) != null){score = document.getElementById(scoreid).value}var factory = new XMLHttpRequestFactory();http_request = factory.getHttpRequest3();if (!http_request) {alert('建议使用IE或Firefox浏览器!');} else {var linkurl = "/subsystem/talent/exampaper/SaveAnswerAjax.jsp" var param = "id=" + Math.random()+ "&examPaperidDetailID=" + examPaperidDetailID+ "&answer=" + escape(document.getElementById(answerid).value)+ "&submitButtonFlag="+submitButtonFlag+ "&score="+escape(score);//alert(param);                     //将中文 放到escape('中文') 否则IE提交的时候会丢失数据                     // "id=" + Math.random() 这样子是为了每次都可以更新一下请求方式http_request.open("POST", linkurl, true);// 利用POST 和 异步                     // 下面这两句 比较重要,缺少会导致提交的数据为空http_request.setRequestHeader("content-length",param.length);//post提交设置项            http_request.setRequestHeader("content-type","application/x-www-form-urlencoded");//post提交设置项                     http_request.onreadystatechange = callback;http_request.send(param); // 参数在这里传进来 }}    function callback() {      if (http_request.readyState == 4 && http_request.status == 200) {      if(document.getElementById(promptid) != null){             document.getElementById(promptid).innerHTML = http_request.responseText; //返回提示信息             }         }   }  
 
页: [1]
查看完整版本: Ajax-Post异步提交(笔记)