我有一个js函数,在执行了一些业务逻辑之后,javascript函数应该将一些结果返回给下面的另一个variable.Sample代码。
var response="";
function doSomething() {
$.ajax({
url:'action.php',
type: "POST",
data: dataString,
success: function (txtBack) {
if(txtBack==1) {
status=1;
}
});
return status;
}
在这里,我想使用像这样
response=doSomething();
我想分配一个返回值"status“"var response".But,结果是‘.But’。
发布于 2010-10-15 18:34:24
或者只是..。
var response = (function() {
var a;
// calculate a
return a;
})();
在这种情况下,response变量接收函数的返回值。该函数将立即执行。
如果要用需要计算的值填充变量,则可以使用此构造。请注意,所有计算都在匿名函数内部进行,因此不会污染全局名称空间。
发布于 2010-10-15 19:17:37
AJAX请求是异步的。您的doSomething函数正在被执行,AJAX请求正在被发出,但是它是异步发生的;因此,doSomething的其余部分将被执行,并且status
的值在返回时是未定义的。
实际上,代码的工作方式如下所示:
function doSomething(someargums) {
return status;
}
var response = doSomething();
一段时间后,AJAX请求即将完成;但为时已晚
您需要修改代码,并在AJAX请求的"success“回调中填充"response”变量。您将不得不延迟使用响应,直到AJAX调用完成。
你以前可能有过的
var response = doSomething();
alert(response);
您应该执行以下操作:
function doSomething() {
$.ajax({
url:'action.php',
type: "POST",
data: dataString,
success: function (txtBack) {
alert(txtBack);
})
});
};
发布于 2010-10-15 18:28:50
您可以简单地从函数中返回一个值:
var response = 0;
function doSomething() {
// some code
return 10;
}
response = doSomething();
https://stackoverflow.com/questions/3941381
复制相似问题