Javascript 带变量问题的jquery函数
我正在尝试将选择选项列表返回到JqGrid添加功能。 我有一个javascript/jquery函数,它执行GET操作,以获取预先格式化的字符串,以便与JqGrid一起使用。但是,我无法将结果返回到JqGrid。如何从jQuery Get函数返回数据Javascript 带变量问题的jquery函数,javascript,jquery,jqgrid,Javascript,Jquery,Jqgrid,我正在尝试将选择选项列表返回到JqGrid添加功能。 我有一个javascript/jquery函数,它执行GET操作,以获取预先格式化的字符串,以便与JqGrid一起使用。但是,我无法将结果返回到JqGrid。如何从jQuery Get函数返回数据 function getDealerPoolSelectOptions() { var selectOptions = "1:A;"; $.get("DealerManagement/GetAllDealerPoolCodes", function
function getDealerPoolSelectOptions() {
var selectOptions = "1:A;";
$.get("DealerManagement/GetAllDealerPoolCodes", function(data) {
alert("Data: " + data.toString()); //Displays all the data I'm looking for
selectOptions = data;
});
alert("SelectOptions: " + selectOptions); //Just Displays the 1:A
return selectOptions;
}
$.get
启动异步AJAX请求,并在完成后调用回调函数(数据).<代码>$。get本身在请求完成之前返回。警报(“SelectOptions…”)
部分立即运行(在检索数据之前),因此尚未设置SelectOptions
。$。get
启动异步AJAX请求,并在完成后调用回调函数(数据)…<代码>$。get本身在请求完成之前返回。警报(“SelectOptions…”)
部分会立即运行(在检索数据之前),因此尚未设置SelectOptions
。在SelectOptions=data之前调用警报因为ajax函数是异步调用的。如果希望发生某些事情,例如将数据添加到网格,请在设置selectOptions数据后在get回调中调用它。在调用selectOptions=data之前调用警报因为ajax函数是异步调用的。如果希望发生某些事情,例如将数据添加到网格,请在设置selectOptions数据后在get回调中调用它。jQuery ajax默认情况下会发出异步请求(这意味着它将在后台发出请求,而不会阻塞函数其余部分的执行)
编辑:虽然您可以进行同步请求,但我应该指出,这是非常不鼓励的。相反,您应该以一种利用事件驱动编程的方式来设计代码
您可以发出如下同步请求:
function getDealerPoolSelectOptions() {
var selectOptions = "1:A;";
$.ajax({
async: false,
url: "DealerManagement/GetAllDealerPoolCodes",
success: function(data) {
alert("Data: " + data.toString()); //Displays all the data I'm looking for
selectOptions = data;
}
});
alert("SelectOptions: " + selectOptions);
return selectOptions;
}
默认情况下,jqueryajax发出异步请求(这意味着它将在后台发出请求,而不会阻塞函数其余部分的执行)
编辑:虽然您可以进行同步请求,但我应该指出,这是非常不鼓励的。相反,您应该以一种利用事件驱动编程的方式来设计代码
您可以发出如下同步请求:
function getDealerPoolSelectOptions() {
var selectOptions = "1:A;";
$.ajax({
async: false,
url: "DealerManagement/GetAllDealerPoolCodes",
success: function(data) {
alert("Data: " + data.toString()); //Displays all the data I'm looking for
selectOptions = data;
}
});
alert("SelectOptions: " + selectOptions);
return selectOptions;
}
也许你应该描述一下你最初的问题。你想用jqGrid做什么
是否要用来自服务器的数据填充“编辑或搜索选择”字段?您应该使用或的dataUrl
。引入的特性(dataUrl
)正是为了按照ajax加载数据
如果您可以从服务器提供的数据只能是JSON,而不是jqGrid正在等待的格式,那么您还可以使用buildSelect
重新格式化从服务器返回的数据。有关更多信息,请参见我的。您可能应该描述您的原始问题。你想用jqGrid做什么
是否要用来自服务器的数据填充“编辑或搜索选择”字段?您应该使用或的dataUrl
。引入的特性(dataUrl
)正是为了按照ajax加载数据
如果您可以从服务器提供的数据只能是JSON,而不是jqGrid正在等待的格式,那么您还可以使用buildSelect
重新格式化从服务器返回的数据。有关更多信息,请参见我的。您是否尝试过执行selectOptions=data.toString()
?是的,我尝试过在几乎所有地方添加toString,但似乎没有什么不同。它实际上已经是一个字符串了。哦,我明白你的问题了,$.get
是异步的,所以selectOptions在函数返回后被设置(请求从服务器返回后内部的代码运行)你是否尝试发出警报(“selectOptions:+selectOptions”)
函数(数据){…}
的内部?这个问题每天至少出现一次,所以。。。head=>
desk您是否尝试过执行selectOptions=data.toString()
?是的,我尝试过将toString添加到几乎所有地方,但似乎没有什么不同。它实际上已经是一个字符串了。哦,我明白你的问题了,$.get
是异步的,所以selectOptions在函数返回后被设置(请求从服务器返回后内部的代码运行)你是否尝试发出警报(“selectOptions:+selectOptions”)
函数(数据){…}
的内部?这个问题每天至少出现一次,所以。。。头=>
desk-1,用于推荐异步请求。它们是修复此代码的快速方法,但无疑也是错误的方法。@lonesomeday我不会说毫无疑问,但在大多数情况下你是对的。同步请求在worldFair中占有一席之地。增加了一个免责声明-1,用于推荐异步请求。它们是修复此代码的快速方法,但无疑也是错误的方法。@lonesomeday我不会说毫无疑问,但在大多数情况下你是对的。同步请求在worldFair中占有一席之地。添加了一个免责声明。