日期:2014-05-16  浏览次数:20435 次

javascript里for循环里sendrequest,sendrequest返回的是一样的值
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
javascript sendrequest 函数

------解决方案--------------------
本帖最后由 showbo 于 2013-07-25 09:24:12 编辑
要修改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);


    }