我有一个js函数,在做了一些业务逻辑之后,javascript函数应该将一些结果返回给另一个变量.下面的示例代码
var response="";
function doSomething() {
$.ajax({
url:'action.php',
type: "POST",
data: dataString,
success: function (txtBack) {
if(txtBack==1) {
status=1;
}
});
return status;
}
Run Code Online (Sandbox Code Playgroud)
在这里我想使用喜欢
response=doSomething();
Run Code Online (Sandbox Code Playgroud)
我想指定一个返回值"status""var response".但结果是'undefined'.
Šim*_*das 56
要不就...
var response = (function() {
var a;
// calculate a
return a;
})();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,响应变量接收函数的返回值.该函数立即执行.
如果要使用需要计算的值填充变量,则可以使用此构造.请注意,所有计算都在匿名函数内部进行,因此您不会污染全局命名空间.
Mat*_*att 17
AJAX请求是异步的.您的doSomething函数正在被执行,正在进行AJAX请求,但它是异步发生的; 所以执行doSomething的剩余部分,并在status返回时未定义值.
实际上,您的代码的工作方式如下:
function doSomething(someargums) {
return status;
}
var response = doSomething();
Run Code Online (Sandbox Code Playgroud)
然后一段时间后,您的AJAX请求正在完成; 但现在已经太晚了
您需要更改代码,并在AJAX请求的"成功"回调中填充"响应"变量.在AJAX调用完成之前,您将不得不延迟使用响应.
你以前可能有过的地方
var response = doSomething();
alert(response);
Run Code Online (Sandbox Code Playgroud)
你应该做:
function doSomething() {
$.ajax({
url:'action.php',
type: "POST",
data: dataString,
success: function (txtBack) {
alert(txtBack);
})
});
};
Run Code Online (Sandbox Code Playgroud)
您只需从函数返回一个值:
var response = 0;
function doSomething() {
// some code
return 10;
}
response = doSomething();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
108702 次 |
| 最近记录: |