昨天做一个需求,原先使用form提交的东西,领导说要改成使用ajax提交。嗯,听起来好像很简单很简单哦,可惜我已经很少敲代码了。擦,这工作让人槽点无数。果断写代码。
var fm=document.getElementById('fm');
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
console.log("ajax success");
formInner.pop();
}
}
xhr.onerror=function(){
console.log("ajax fail");
}
xhr.open("POST","http://agent.pconline.com.cn:8040/adpubb/gen/task/urlsave.jsp"); fm.innerHTML += '<input type="hidden" name="area" value="1" />';
fm.innerHTML += '<input type="hidden" name="pt" value="'+success+'" />';
fm.innerHTML += '<input type="hidden" name="et" value="'+faild+'" />';
fm.innerHTML += '<input type="hidden" name="rt" value="urltest5.jsp?a=1" />';
var inputs=fm.getElementsByTagName("input");
var subResult="";
for(var i=0;i<inputs.length;i++){
var value=encodeURIComponent(inputs[i].value);
value=value.replace(/~/g, '%7E').replace(/!/g, '%21').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/'/g, '%27').replace(/\%20/g,'+')
subResult+=inputs[i].name+"="+value+"&";
}
subResult=subResult.slice(0,-1);
xhr.send(subResult);
perfect,完美啊,好了,提交,呃,我再提交,呃,我再试试,呃。为毛老是500错误啊。
我试试之前的form,没问题。难道是我form的data的格式不对???换成了formData。嗯,果不其然还是500错误。
what the fuck????????????????
问度娘了,问啊问问啊问,写了代码代码5分钟,问度娘问了两个多小时。问了度娘好多次,度娘都说这是服务器故障跟你没关系!可是后端的小伙伴咬定这就是我的错,内牛满面啊。然后我一不小心就看到xmlHttpRequest的setRequestHeader这个东东。加上试试,死马当活马医。乱试试就对了。结果尼玛真的成功了。好了,还真是我的错。
只要在xhr.open后添加这一句就可以了。擦
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
吐槽下自己,写代码经常丢三拉丝。这工作简直吐不了槽了