Javascript 带变量问题的jquery函数

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

我正在尝试将选择选项列表返回到JqGrid添加功能。 我有一个javascript/jquery函数,它执行GET操作,以获取预先格式化的字符串,以便与JqGrid一起使用。但是,我无法将结果返回到JqGrid。如何从jQuery Get函数返回数据

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之前调用警报在调用
selectOptions=data之前调用警报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中占有一席之地。添加了一个免责声明。