欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

js重复使用xmlhttp结果只会发送一次数据,该如何解决

更新时间: 2014-01-05 01:50:47 责任编辑: Author_N1

 

js重复使用xmlhttp结果只会发送一次数据
function up_data(data)
{
var data=encodeURIComponent(document.documentElement.innerHTML);
var xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var up_result;
up_result=xmlhttp.responseText;
}
}
xmlhttp.open("POST","http://www.memeda.pw/g.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("data="+data);

}

function get_web_by_get(url){

var xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var get_result;
get_result=xmlhttp.responseText;
}
}
xmlhttp.open("GET",url,true)
xmlhttp.send();
return get_result;
}

function get_web_by_post(url,post_data){

var xmlhttp=new XMLHttpRequest();

xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
post_result=xmlhttp.responseText;
}
}
xmlhttp.open("POST",url,true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(post_data);

return post_result;
}

var sdata;

sdata=get_web_by_get('/test.php?id=123');
up_data(sdata);



这样 但是其实只发送了一次test.php?id=123一次。后面的post都不会发送

而且就算sdata=get_web_by_get('/test.php?id=123');
sdata=get_web_by_get('/test.php?id=124');
也只会发送出去一次 求解。
--参考方法--
这是为了防止恶意请求,异步请求不能不间断的发送,你想想啊,如果可以不间断的发送这些东西,那在前台随便写个for循环,一直发送请求,那服务器还不立马就挂掉了。。。

你试试使用setTimeout,设置隔一段时间再发送请求。

或者是请求的时候,添加一个random随机量试试。

反正你这样直接不间断的发,是不行的。
--参考方法--
setTimeout(function(){
var sdata=get_web_by_get('/temp/test.php?id=123');
var sdata=get_web_by_get('/temp/test.php?id=124');
},5*1000);
setTimeout(function(){up_data(sdata);},5*1000);


这就是你说的延时了,你把所有的都延时到5秒之后了,那意思,还不是全部5秒之后执行的?
还是在同时发出的请求啊。

function aaa(id){
var sdata,
    speed = 1000;

sdata = get_web_by_get('/temp/test.php?id='+id);
setTimeout(function(){up_data(sdata);},speed);
setTimeout(function(){id++;aaa(id);},2*speed);
}
aaa(123);


你这样试试,这里我没有加入结束的代码,所有就会一直发送。

如果还不行,
get_web_by_get('/temp/test.php?id='+id+"&data="+(new Date().getTime()))

多试试吧。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:50:47
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/1926/
本文WWW.DOC100.NET DOC100.NET版权所有。