我有这样的jQuery Ajax()请求
function loadMarkers() {
for (var i = 0; i < data.length; i++) {
var projects = data[i];
var project = new esri.geometry.Point(projects.Longitude, projects.Latitude);
}
}
var req1 = $.ajax({
type: "POST",
url: "assets/app/data.php",
data: data,
cache: false,
dataType: "JSON"
});
req1.done(function (data) {
loadMarkers();
});
我尝试将功能
loadMarkers()
分配给req1..done()
的原因是我需要运行20个请求,并且我不想在所有请求loadMarkers()
中重复.done()
块。而是只是在其中调用loadMarkers()
,但出现此错误未被捕获的ReferenceError:未定义数据
你能让我知道如何解决这个问题吗?
最佳答案
范围是由定义函数的位置(而不是从调用位置)决定的。data
变量的范围比loadMarkers
函数的范围更窄。
为了访问其值,您需要将其作为参数传递。
(loadMarkers(data);
和function loadMarkers(data) {
)
注意:http://jshint.com/会突出显示此问题。
作为一个可怕的黑客,您还可以在更广泛的范围内定义另一个data
变量:
req1.done(function (data) {
window.data = data;
loadMarkers();
});
……但是不要那样做。全球人员是一场维护噩梦。