上面的ajax写的是GET方式提交的异步内容,当遇到大数据的情况下,会出现url超长,或者当url的内容出现“&”时,则会按照url的链接符号传输,会出现截断。
下面是ajax用POST的形式进行提交,在提交大数据的内容出现"&",不会出现错误或者数据截断。
function GetXmlHttpObject()
{
var xmlHttp=null;
try{ // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){
// Internet Explorer
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
function saveHint()
{ xmlHttp=GetXmlHttpObject()
if (xmlHttp==null){
alert ("您的浏览器不支持AJAX!");
return;
}
var url="forasp.cn.save.php";
data="p="+encodeURIComponent(document.getElementById('v').value);//定义参数p
//主要是上面的这句 “encodeURIComponent”,设置将内容进行转码,这个非常重要。
data=data+"&sid="+Math.random();//加上随机码,防止缓存
xmlHttp.open("POST",url,true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.send(data);//将数据进行post提交
}
function stateChanged()
{
if (xmlHttp.readyState==4&&xmlHttp.status == 200)
{
document.getElementById("v").value=xmlHttp.responseText;//获取返回值,并给对象v
}
}
接受页面通过进行传统的接受即可,获取前面的参数p
比如php $_POST['p']
asp request.form('p')
这样就可以完成大数据量的POST提交,并且能够自动转码进行url的&号规避。
更多信息请查看IT技术专栏