我有像这样的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:未定义数据
答案 0 :(得分:1)
范围取决于定义的函数的位置,而不是调用它的位置。
data
变量存在于loadMarkers
函数的较窄范围内。
要访问其值,您需要将其作为参数传递。
(loadMarkers(data);
和function loadMarkers(data) {
)
注意:http://jshint.com/会突出显示此问题。
作为一个可怕的黑客,您还可以在更广泛的范围内定义另一个data
变量:
req1.done(function (data) {
window.data = data;
loadMarkers();
});
......但不要这样做。 Globals是维护的噩梦。