日期:2014-05-17  浏览次数:20464 次

JQUERY 数组循环内使用GET与ASPX交互?
有一个数组

如:1,2,3,4,5,6

这些数字对应了数据库中一个表中的ID

比如:数据库中ID对应的值 为:9,8,7,6,5

在循环的时候.想根据循环内,根据这些数字读取出数据库中的值


var str = "";
for (var i = 0; i < arrValue.length - 1; i++) {
  var newid = getid(parseInt(arrValue[0]));
  str +="<div>"+newid+"</div>"

return str;



function getid(itemid){
$.get("/getNewPrice.aspx", {id:itemid, time:"2pm" },
  function(data){
  return data;
  });
}



结果却输出的是undefined..没任何数据

请问这是为什么?哪里不对吗.请大哥们帮忙

------解决方案--------------------
探讨
var str = "";
for (var i = 0; i < arrValue.length - 1; i++) {
var newid = getid(parseInt(arrValue[0]));
str +="<div>"+newid+"</div>"

return str;



function getid(itemid){
$.get("/getNewPrice.aspx", {id:itemid, time:"2pm" },
function(data){
return data;
});
}

------解决方案--------------------
function getid(itemid){
$.get("/getNewPrice.aspx", {id:itemid, time:"2pm" },
function(data){
return data; });
}


任何的地方调用你这个getid方法都是获取不到这个return值得。
因为get方法里的function和外面的function是完全不同的。
ajax请求是异步的 不会阻塞浏览器的线程,
如果想保存多次ajax请求所返回的数据,那就使用全局变量。
具体方法 Lisliefor已经给出。

你可以用下面的代码测试下
var id = '123';
function getid(itemid) {
$.get("/getNewPrice.aspx", { id: itemid, time: "2pm" },
function (data) {
id = data; });
return id; }

var test = getid(1);
alert(test);

这里弹出的test永远都只会是“123”,因为函数getid不会等到get请求完后,在return id,
他们是并行的。