今天我正在创建一个名为“sendData”的Javascript函数。
这是为了方便,而不是写出一个完整的ajax语句。
无论如何我知道它是异步的,我想知道如何等待并获得返回值而不是返回任何内容。这就是我所拥有的。
function returnData(data)
{
alert(data + " ddd");
return data;
}
function sendData(data,file) {
var a = ""
$.ajax({
url: file,
data: data,
type: "POST",
success: function(newData)
{
a = newData;
}
})
returnData(a);
}
我认为这会奏效,但事实并非如此。有谁知道我可以等待它返回什么?
function sendData(data,file) {
var a = ""
$.ajax({
url: file,
data: data,
type: "POST",
async:false,
success: function(newData)
{
a = newData;
}
})
return a;
}
答案 0 :(得分:3)
好吧,如果您想让它保持异步,请在success
内调用您的函数,即:
function returnData(data)
{
alert(data + " ddd");
return data;
}
function sendData(data,file) {
var a = ""
$.ajax({
url: file,
data: data,
type: "POST",
success: function(newData)
{
returnData(newData);
}
})
}
这样,只有在有东西发送给它之后才会调用你的函数。否则,将其设置为等待响应,然后在参数中继续async:false,
。
答案 1 :(得分:2)
如果设置选项async:false
,它将等待回调返回。
$.ajax({
...
async:false,
...
})
答案 2 :(得分:2)
你也可以这样做:
function sendData(data,file) {
var a = ""
$.ajax({
url: file,
data: data,
type: "POST",
success: function(newData)
{
returnData(newData);
}
})
}
这是使用回调的典型方式。成功函数是应该在成功时执行的代码。
您可能还想查看承诺:http://api.jquery.com/promise/
答案 3 :(得分:2)
可能只是用?
function sendData(data,file) {
var a = ""
$.ajax({
url: file,
data: data,
type: "POST",
success: function (newData) {
a = newData;
returnData(a);
}
})
return;
}