我有一个提供标准扩展点的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请求?

推荐答案

jQuery documentation开始:将asynchronous选项指定为false以获得同步Ajax请求.然后回调函数可以在母函数继续之前设置一些数据.

下面是如果按照建议更改代码的样子:

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
    });
}

Javascript相关问答推荐

使用JavaScript/PHP将二维码保存为服务器端的图像

在卡信息之间切换

ReactJS中的material UI自动完成类别

对象和数字减法会抵消浏览器js中的数字

如何分配类型脚本中具有不同/额外参数的函数类型

Cypress -使用commands.js将数据测试id串在一起失败,但在将它们串在一起时不使用命令有效

如何解决CORS政策的问题

docx.js:如何在客户端使用文档修补程序

在vercel throws上部署带有gunjs的sveltekit应用无法找到模块./' lib/文本编码'

使用i18next在React中不重新加载翻译动态数据的问题

点击按钮一次有文本出现和褪色,而不是点击两次?(html,CSS,JavaScript)

Ember.js 5.4更新会话存储时如何更新组件变量

更改预请求脚本中重用的JSON主体变量- Postman

JavaScript是否有多个`unfined`?

搜索功能不是在分页的每一页上进行搜索

AddEventListner,按键事件不工作

在Odoo中如何以编程方式在POS中添加产品

当我点击一个按钮后按回车键时,如何阻止它再次被点击

使用CEPRESS截取时,cy.Wait()在等待5000ms的第一个路由请求时超时

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';