可以在回调中设置javascript函数参数的值吗?
那标题太过分了。下面是我在代码中尝试做的事情。本例中的回调位于jQuery$.get函数中可以在回调中设置javascript函数参数的值吗?,javascript,jquery,ajax,callback,Javascript,Jquery,Ajax,Callback,那标题太过分了。下面是我在代码中尝试做的事情。本例中的回调位于jQuery$.get函数中 function getMapMarkup(loadUrl, myVar) { me = myVar; $.get( loadUrl, { var1: "hello", var2: "world" }, function(responseText) { me =
function getMapMarkup(loadUrl, myVar) {
me = myVar;
$.get(
loadUrl,
{ var1: "hello", var2: "world" },
function(responseText) {
me = responseText;
myVar = me; //doesn't work.
},
"html"
);
}
是否有办法更改
函数(responseText)
回调中myVar
的值,以便我以后在程序中使用它?或者有没有其他(更好的)方法来完成我正在尝试做的事情?如果后面的是指在$.get
调用之后立即执行,那么就没有办法了,因为AJAX是异步的,$.get
会立即返回,并且成功回调可以在以后执行。知道何时发生这种情况的唯一可靠方法是将取决于其结果的代码放入success
回调中。您还可以在success回调函数中调用其他函数,并将AJAX调用的结果传递给它。如果稍后的是指紧跟$之后。get
调用则否,这是不可能的,因为AJAX是异步的,$.get
会立即返回,而成功回调可以在很久以后执行。知道何时发生这种情况的唯一可靠方法是将取决于其结果的代码放入success
回调中。您还可以在成功回调中调用其他函数,并将AJAX调用的结果传递给它。在执行回调之前,您很可能正在访问myVar
$.get
发出一个异步的AJAX调用,因此回调函数将在服务器响应后调用,因此对myVar
的任何即时访问都不会有更新的值。很可能是在执行回调之前访问myVar
$.get
发出一个异步的AJAX调用,因此回调函数将在服务器响应后调用,因此对myVar
的任何即时访问都不会有更新的值。它确实有效,但AJAX调用是异步进行的,因此在该函数完成时,脚本的其余部分已经运行,但尚未收到myVar
的新值。很可能在执行回调之前就已经访问了myVar。记住,$.get
是一个异步的AJAX调用,因此回调函数将在服务器响应后调用。最简单(但不是最好)的解决方案是通过传递async:false使AJAX调用同步。但是为了做到这一点,您需要使用$。ajax
而不是$。get
除了ajax调用是异步进行的之外,它确实可以工作,因此在函数完成时,脚本的其余部分已经运行,但尚未收到myVar
的新值。很可能在执行回调之前就已经访问了myVar。记住,$.get
是一个异步的AJAX调用,因此回调函数将在服务器响应后调用。最简单(但不是最好)的解决方案是通过传递async:false使AJAX调用同步。不过,为了做到这一点,您需要使用$.ajax
而不是$。获取谢谢各位。我知道,由于$.get的异步特性,我无法立即设置myVar,但我希望能够在回调中以某种方式“访问它”,以便在$.get完成时设置并使用它。这样做的原因是在准备就绪时使用myVar变量以以下方式更新DOM:$(“#myDiv”).html(myVar)。我会牢记您的建议,再次感谢您……我还应该补充一点,原因之一是我想缓存myVar
的值,这样我就不需要调用$。如果myVar
中已经有html(比如,如果设备的方向发生变化),请再次获取。所以我想像varmyHtml=null一样调用它;getMapMarkup(someURL,myHtml)
。。并将结果值保存在myHtml
中供以后使用。谢谢各位。我知道,由于$.get的异步特性,我无法立即设置myVar,但我希望能够在回调中以某种方式“访问它”,以便在$.get完成时设置并使用它。这样做的原因是在准备就绪时使用myVar变量以以下方式更新DOM:$(“#myDiv”).html(myVar)。我会牢记您的建议,再次感谢您……我还应该补充一点,原因之一是我想缓存myVar
的值,这样我就不需要调用$。如果myVar
中已经有html(比如,如果设备的方向发生变化),请再次获取。所以我想像varmyHtml=null一样调用它;getMapMarkup(someURL,myHtml)
。。并将结果值保存在myHtml
中,供以后使用。