ajax非异步请求,关于javascript:如何让jquery执行同步而非异步的Ajax请求?

我有一个提供标准扩展点的javascript小部件。其中之一是beforecreate函数。它应该返回false以防止创建项目。

我已经使用jquery向这个函数添加了一个Ajax调用:

beforecreate: function (node, targetNode, type, to) {

jQuery.get('http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),

function (result) {

if (result.isOk == false)

alert(result.message);

});

}

但我希望阻止我的小部件创建该项,所以我应该在母亲函数中返回false,而不是在回调中。有没有使用jquery或其他浏览器API执行同步Ajax请求的方法?

解决这个问题的正确方法是重写小部件的扩展点使用承诺。通过这种方式,您可以轻松地将异步操作(如Ajax请求)设置为beforecreate。

我提出了sajak函数。我们有字母T吗?是的,范娜,给我3吨。

@科斯在现场。此处不需要同步xhr

如果在启动JavaScript时有人问我一条建议,我会说:拥抱JavaScript的异步特性,不要试图与之抗争。

您可以尝试使用embeddedjs.com

这个问题就像问"我如何以纯文本形式存储我的用户密码?"当然有答案,但不要这样做。

从你的jQuery文件:指定选项异步和同步的AJAX请求to get a false。然后你可以在一些数据集的回调函数,可你的妈妈。

这里是你的代码会建议:如果发生的样子。

beforecreate: function (node, targetNode, type, to) {

jQuery.ajax({

url: 'http://example.com/catalog/create/' + targetNode.id + '?name=' + encode(to.inp[0].value),

success: function (result) {

if (result.isOk == false) alert(result.message);

},

async: false

});

}

确切地说,同步调用不可能使用get()、post()、load()。只有ajax()有"async"参数,可以设置为"false"。

@ SLA80不。自jquery 1.1以来:stackoverflow.com/questions/6849686/…

@愚蠢:如果您只希望某些请求是同步的,那么答案仍然是正确的,并且是相关的。

@qualifidial my comment针对sla80的错误注释;可以对同步调用使用get()、post()、load()。

只需注意,添加async:false对我来说非常有用,只要我将整个ajax函数设置为某个变量的值。例如,var ajaxresults = $.ajax({....。

jquery>=1.8不再支持async false。请参阅api.jquery.com/jquery.ajax

@jquery>=1.8中仍然支持ken async: false。将async: false与jqxhr($.Deferred)结合使用的能力是不赞成的。换句话说,必须使用更新的success/error/complete回调选项,而不是传统的方法,例如jqXHR.done()。

使用async:false是否安全,因为它将保留其余代码的执行。一旦得到Ajax的响应,只有到那时,其余的代码才会执行。如果服务器不响应Ajax请求,那么最好的处理方法是什么?如果服务器没有响应Ajax请求,是否应该添加超时以继续其他请求?

async已弃用

@伊贝尔:不,看本·约翰逊的评论。它与$.Deferred一起被弃用,而不是单独使用。

重要的是,对于jquery>

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值