ajax+同步+返回数据库,如何使AJAX同步

异常是我需要从数据库中立即返回的数据。不过,我需要“连续代码”来等待Id被返回。

最好的办法是不要让这种情况发生,而是要接受事件驱动的,基于浏览器和网络编程的异步性质。

非常小的选项是强制ajax请求同步。目前,在jQuery 1.x中,您可以通过将async: false添加到您的呼叫中来实现此目的;您还必须开始使用自己的$.Deferred而不是从ajax得到的那个,因为从jQuery 1.8开始,使用async: false与jqXHR的内置许诺已被弃用。所以:

self.insertTextItem = function (item, synchronous) { // <== Optional flag

var deferred = $.Deferred(); // <== Your own Deferred

console.log("Insert TextItem with Service");

$.ajax({

type: "POST",

url: serviceRoot + "InsertTextbatchTagItem",

beforeSend: serviceFramework.setModuleHeaders,

data: item,

cache: false,

async: synchronous === true ? false : true, // <=== Use it, ignoring `undefined` and othe rfalsey values

success: function(data) { // Handling you Deferred

deferred.resolveWith(data); // (this is probably incomplete)

}, //

error: function() { //

deferred.reject(); //

} //

});

return deferred.promise(); // Return the promise for your Deferred

};

这将使insertTextItem块(锁定了大多数浏览器的用户界面),直至调用完成。由于jQuery的承诺的工作方式,这也将使done回调同步。 (许多其他承诺实现并非如此,但它是jQuery的。)

该选项使用XMLHttpRequest的基本功能,该功能允许同步ajax。

这个选项也会在jQuery中消失。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值