javascript里for循环里sendrequest,sendrequest返回的是一样的值

Applexiaoxiaoben 2013-07-25 08:59:51
for循环里sendrequest,假如循环了1-5,但是sendrequest之后获取到的也是五次,但是都是1-5中的5,也就是最后一个值。为什么呢?

for (var ids=0; ids<6; ids++){

alert(ids);

sendRequest("GET", "/rest/oam/project/"+m+"/status", paramsp, function(response) {。。。。。
。。。。。。
alert(ids);
。。。。。。。
}


}

也就是说alert(ids)出来的东西不一样,虽然都在for循环里,但是sendrequest里的都是alert出来的5
...全文
243 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Applexiaoxiaoben 2013-07-25
  • 打赏
  • 举报
回复
谢谢版主~~~呵呵
Go 旅城通票 2013-07-25
  • 打赏
  • 举报
回复
给sendRequest增加ids参数不会与什么副作用,因为加到最后,所以之前的代码没传递ids也不会出错。。 修改执行callback(ajaxResponse,ids);回调就看你具体代码了,如果之前的都是一个参数,值传递ajax对象,那么增加ids没什么影响,但是如果是多参数的,这个就不好搞了。。,只能在当前页面重新定义sendRequest方法 如果你怕混乱,最好还是在当前页面重新定义sendRequest方法覆盖原来的
Applexiaoxiaoben 2013-07-25
  • 打赏
  • 举报
回复
引用 2 楼 KongHuLu 的回复:
AJAX请求是异步的 在回调的时候已经循环完了
具体知道怎么改吗?
Applexiaoxiaoben 2013-07-25
  • 打赏
  • 举报
回复
引用 7 楼 showbo 的回复:
sendRequest你改了回调的调用方式了没有,sendRequest也要增加一个参数。。。
版主你的意思是改 function sendRequest(method,url,paramsp,callback,ids){ //....其他处理 //调用回调函数 callback(ajaxResponse,ids); } 这个东西吧。 可是我们项目里很多地方都用到sendRequest,并且大都不需要ids,那怎么办?只能重新声明一个function?
Go 旅城通票 2013-07-25
  • 打赏
  • 举报
回复
sendRequest你改了回调的调用方式了没有,sendRequest也要增加一个参数。。。
Applexiaoxiaoben 2013-07-25
  • 打赏
  • 举报
回复
引用 5 楼 showbo 的回复:
请看描红的地方,需要修改的 function sendRequest(method,url,paramsp,callback,ids){ //....其他处理 //调用回调函数 callback(ajaxResponse,ids); } for (var ids = 0; ids < 6; ids++) { alert(ids); sendRequest("GET", "/rest/oam/project/" + m + "/status", paramsp, function (response, ids) {//。。。。。 //。。。。。。 alert(ids); //。。。。。。。 }, ids); }
版主,还是不行,我已经改成这样了,还是不对,提示m没有定义 sendRequest("GET", "/rest/oam/project/"+m+"/status", paramsp, function(response,m) { if (response.status != null) { statusList[i] = { caseId: m, caseName: projNa }; alert(m); i++; } }, m);
Go 旅城通票 2013-07-25
  • 打赏
  • 举报
回复
请看描红的地方,需要修改的 function sendRequest(method,url,paramsp,callback,ids){ //....其他处理 //调用回调函数 callback(ajaxResponse,ids); } for (var ids = 0; ids < 6; ids++) { alert(ids); sendRequest("GET", "/rest/oam/project/" + m + "/status", paramsp, function (response, ids) {//。。。。。 //。。。。。。 alert(ids); //。。。。。。。 }, ids); }
Applexiaoxiaoben 2013-07-25
  • 打赏
  • 举报
回复
引用 3 楼 Applexiaoxiaoben 的回复:
[quote=引用 1 楼 showbo 的回复:] 要修改sendRequest的逻辑和参数,做成闭包的形式。。 function sendRequest(method,url,paramsp,callback,ids){ //....其他处理 //调用回调函数 callback(ajaxResponse,ids); } for (var ids = 0; ids < 6; ids++) { alert(ids); sendRequest("GET", "/rest/oam/project/" + m + "/status", paramsp, function (response, ids) {//。。。。。 //。。。。。。 alert(ids); //。。。。。。。 }, ids); }
版主,你好 像我这种格式应该在哪里加idx呢,并且这里是用callback还是我的function(response)呢,还麻烦楼主指教了。我的m是for循环过来的,但是就是这个m总是拿到最后的值(我的sendrequest所有都包在一个()里) sendRequest("GET", "/rest/oam/project/"+m+"/status", paramsp, function(response) { if (response.status != null) { statusList[i] = { caseId: m, caseName: projNa }; alert(m); i++; } }); 不好意思版主我写错了,这块我知道怎么加,是function sendRequest(method,url,paramsp,callback,ids){ //....其他处理 //调用回调函数 callback(ajaxResponse,ids); } 这一块我直接复制这个代码吗?还是哪里对应起来呵呵
Applexiaoxiaoben 2013-07-25
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
要修改sendRequest的逻辑和参数,做成闭包的形式。。 function sendRequest(method,url,paramsp,callback,ids){ //....其他处理 //调用回调函数 callback(ajaxResponse,ids); } for (var ids = 0; ids < 6; ids++) { alert(ids); sendRequest("GET", "/rest/oam/project/" + m + "/status", paramsp, function (response, ids) {//。。。。。 //。。。。。。 alert(ids); //。。。。。。。 }, ids); }
版主,你好 像我这种格式应该在哪里加idx呢,并且这里是用callback还是我的function(response)呢,还麻烦楼主指教了。我的m是for循环过来的,但是就是这个m总是拿到最后的值(我的sendrequest所有都包在一个()里) sendRequest("GET", "/rest/oam/project/"+m+"/status", paramsp, function(response) { if (response.status != null) { statusList[i] = { caseId: m, caseName: projNa }; alert(m); i++; } });
潮起潮落 2013-07-25
  • 打赏
  • 举报
回复
AJAX请求是异步的 在回调的时候已经循环完了
Go 旅城通票 2013-07-25
  • 打赏
  • 举报
回复
要修改sendRequest的逻辑和参数,做成闭包的形式。。

function sendRequest(method,url,paramsp,callback,ids){
//....其他处理
//调用回调函数
callback(ajaxResponse,ids);
}

for (var ids = 0; ids < 6; ids++) {

alert(ids);

sendRequest("GET", "/rest/oam/project/" + m + "/status", paramsp, function (response, ids) {//。。。。。
//。。。。。。
alert(ids);
//。。。。。。。
}, ids);


}

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧