$.getJSON调用中的JavaScript变量作用域
为什么调用showOrders时,orders数组为空?我的服务返回4个对象,我可以在.push调用中遍历项目初始化,但返回的数组始终为空$.getJSON调用中的JavaScript变量作用域,javascript,jquery,scope,getjson,Javascript,Jquery,Scope,Getjson,为什么调用showOrders时,orders数组为空?我的服务返回4个对象,我可以在.push调用中遍历项目初始化,但返回的数组始终为空 var showOrders = function(orders){ $.each(orders, function(i, val){ alert(val.Order + "::" + val.Href); }); } var orders = (function(d){ var _r = [];
var showOrders = function(orders){
$.each(orders, function(i, val){
alert(val.Order + "::" + val.Href);
});
}
var orders = (function(d){
var _r = [];
$.getJSON("/_vti_bin/listdata.svc/Orders", function (data) {
for(var i = 0; i < data.d.results.length; i++)
{
var o = data.d.results[i];
_r.push({
Id: o.Id,
Order: o.Order,
PurchaseDate: o.PurchaseDate,
CustomerPO: o.CustomerPO,
PurchasedBy: o.PurchasedBy,
SubTotal: o.SubTotal,
Status: o.Status,
Href: o.Path + "/DispForm.aspx?ID=" + o.Id
});
}
return _r;
});
d(_r);
})(showOrders);
var showOrders=函数(订单){
$。每个(订单、功能(i、val){
警报(val.Order+“:”+val.Href);
});
}
变量顺序=(函数(d){
var _r=[];
$.getJSON(“/”vti_bin/listdata.svc/Orders”),函数(数据){
对于(变量i=0;i
$。getJSON正在执行异步调用。您需要在getJSON调用的回调中执行d-callback(在循环之后):
var orders=(函数(d){
var _r=[];
$.getJSON(“/”vti_bin/listdata.svc/Orders”),函数(数据){
对于(变量i=0;i
我认为会有异步调用,所以在获得数据之前。。您的每个函数开始执行这类问题每天大约被询问100次。异步调用不能返回值!这就像打电话订购比萨饼一样。我想你可以从我传递的委托的使用中看出,我的意图是在检索数据后调用委托。我刚接错电话。
var orders = (function(d){
var _r = [];
$.getJSON("/_vti_bin/listdata.svc/Orders", function (data) {
for(var i = 0; i < data.d.results.length; i++)
{
var o = data.d.results[i];
_r.push({
Id: o.Id,
Order: o.Order,
PurchaseDate: o.PurchaseDate,
CustomerPO: o.CustomerPO,
PurchasedBy: o.PurchasedBy,
SubTotal: o.SubTotal,
Status: o.Status,
Href: o.Path + "/DispForm.aspx?ID=" + o.Id
});
}
d(_r);
});
})(showOrders);