我编写了一个简单的通用ajax函数,可以在我的脚本中由多个函数调用。我不知道如何将返回给ajax函数的数据返回给调用者。
// some function that needs ajax data
function myFunction(invoice) {
// pass the invoice data to the ajax function
var result = doAjaxRequest(invoice, 'invoice');
console.dir(result); // this shows `undefined`
}
// build generic ajax request object
function doAjaxRequest(data, task) {
var myurl = 'http://someurl';
$.ajax({
url: myurl + '?task=' + task,
data: data,
type: 'POST',
success: function(data) {
console.dir(data); // this shows good data as expected
return data; // this never gets back to the calling function
}
});
}
有没有办法将ajax数据返回给调用函数?
答案 0 :(得分:11)
$.ajax
是异步的,因此为了获取数据,您需要将回调传递给doAjaxRequest
函数。我已经向doAjaxRequest
添加了一个回调参数,而不是使用doAjaxRequest
的结果,处理响应的代码在回调函数中。
// some function that needs ajax data
function myFunction(invoice) {
// pass the invoice data to the ajax function
doAjaxRequest(invoice, 'invoice', function (result) {
console.dir(result);
});
}
// build generic ajax request object
function doAjaxRequest(data, task, callback) {
var myurl = 'http://someurl';
$.ajax({
url: myurl + '?task=' + task,
data: data,
type: 'POST',
success: function(data) {
console.dir(data); // this shows good data as expected
callback(data);
}
});
}
答案 1 :(得分:-1)
我认为这个例子对你有充分的帮助
function testAjax() {
var result="";
$.ajax({
url:"getvalue.php",
async: false,
success:function(data) {
result = data;
}
});
return result;
}
function fun2()
{
alert(testajax())
}
你注意到一件事async:false