我有一个jQuery脚本:
$.ajax({
url: "/scripts/secure/development/ajax.asp",
type: "POST",
dataType: "text",
data: "cmd=addresses",
success: function(msg){
var arrRows = msg.split("#*#");
for(i=0;i<arrRows.length;i++){
var record_id = arrRows[i].split("|")[0];
var address = arrRows[i].split("|")[1];
getPoint(address,function(pnt){
var latitude = pnt.lat();
var longitude = pnt.lng();
$.ajax({
url: "/scripts/secure/development/ajax.asp",
type: "POST",
dataType: "text",
data: "cmd=update&rec_id="+record_id+"&lat="+latitude+"&lng="+longitude,
success: function(msg){
}
});
});
}
}
});
function getPoint(address,callback){
var geocoder = new GClientGeocoder();
geocoder.getLatLng(address,callback);
}
该脚本旨在提取一个分隔的record_ids列表地址和循环遍历每个地址并获取每个地址的地理位置,然后使用地理位置的lat和lng更新数据库中的记录。
我的问题是这个......在第二个(内部)$ .ajax调用中,我需要访问我在for循环中定义的record_id变量,以便更新数据库中的正确记录但是我可以似乎无法访问内部ajax帖子的成功函数中的record_id变量。
请帮忙! 感谢。
答案 0 :(得分:2)
您需要创建一个这样的闭包:
var callback = (function(record_id)
{
return function(pnt)
{
var latitude = pnt.lat();
var longitude = pnt.lng();
$.ajax({
url: "/scripts/secure/development/ajax.asp",
type: "POST",
dataType: "text",
data: "cmd=update&rec_id="+record_id+"&lat="+latitude+"&lng="+longitude,
success: function(msg){
}
});
});
})(record_id);
getPoint(address, callback);