ajax作为函数返回,如何从用户定义的函数返回ajax成功

“ajax”中的“a”代表“异步”(“Asynchronous JavaScript And XML”,尽管现在大多数人都使用JSON而不是XML)。

因此,您的Ajaxcall函数在ajax调用完成之前返回,这就是您无法将消息作为返回值返回的原因。

通常要做的是传递一个回调:

Ajaxcall(id_array,"del", functon(msg) {

alert(msg);

});

function Ajaxcall(id_array,type, callback){

$.ajax({

type: "POST",

url: "serverpage.php",

cache:false,

data: ({id:id_array,type:type}),

success: function(msg){

callback(msg);

}

});

}

使用JavaScript非常简单,因为JavaScript的函数是closures,可以内联定义。例如,假设您想要这样做:

function foo() {

var ajaxStuff, localData;

localData = doSomething();

ajaxStuff = getAjaxStuff();

doSomethingElse(ajaxStuff);

doAnotherThing(localData);

}

你可以像这样异步地重写它:

function foo() {

var localData;

localData = doSomething();

getAjaxStuff(function(ajaxStuff) {

doSomethingElse(ajaxStuff);

doAnotherThing(localData);

});

}

我应该注意,可能使ajax调用同步。在jQuery中,您可以通过传递async选项(将其设置为false)来实现。但这是非常糟糕的主意。同步ajax调用以非常用户不友好的方式锁定大多数浏览器的UI。相反,如上所述稍微重构您的代码。

但仅仅是为了完整性:

alert(Ajaxcall(id_array,"del"));

function Ajaxcall(id_array,type){

var returnValue;

$.ajax({

type: "POST",

url: "serverpage.php",

cache:false,

async: false, // <== Synchronous request, very bad idea

data: ({id:id_array,type:type}),

success: function(msg){

returnValue = msg;

}

});

return returnValue;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值