当前位置: 首页 > 面试题库 >

如何让jQuery执行同步而不是异步的Ajax请求?

娄振
2023-03-14
问题内容

我有一个提供标准扩展点的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文档中:您将异步选项指定为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小部件。其中之一是功能。它应返回以防止创建项目。 我已经使用jQuery在此函数中添加了Ajax调用: 但是我想防止我的小部件创建项目,所以我应该在母函数中返回,而不是在回调中返回。有没有一种方法可以使用jQuery或任何其他浏览器内API执行同步AJAX请求? 问题答案: 从jQuery文档开始:您将 异步 选项指定为 false, 以获取

  • 问题内容: 我过去曾经做过一些jQuery,但是我完全坚持了这一点。我了解使用同步ajax调用的优缺点,但是在这里将是必需的。 远程页面已加载(由firebug控制),但未显示任何返回信息。 我应该采取什么措施才能使函数正确返回? 问题答案: 在发出同步请求时,应该 范例-http://api.jquery.com/jQuery.ajax/#example-3 请注意: 设置异步属性设置为fals

  • 问题内容: 如何使Ajax请求同步? 我有一个需要提交的表格。但是只有在用户输入正确的密码时才需要提交。 这是表单代码: 用于发送和检查密码的jQuery代码是这样的: 但是,无论ajax请求返回的值如何,该表单始终提交。我检查了其他所有内容。输入正确的密码后,arr的值将显示为“成功”,反之亦然。 如何使此请求同步?据我可以调试,请求是异步的,因此在请求完成之前先提交表单。 checkpass.

  • 问题内容: 同步请求和异步请求之间的性能(速度方面)是否有差异? 使用异步请求的所有原因是什么? 问题答案: 您应该始终使用异步Ajax请求,实际上,我只知道应该使用同步Ajax请求的一个地方,即您是否在Ajax请求中,将新的JavaScript文件嵌入客户端,然后引用类型和/或原始Ajax请求返回的JavaScript文件中的对象。然后,应该(或可以理智地)通过使用同步Ajax请求包括对这个新J

  • 问题内容: 我想根据多个ajax / json请求的结果来更新页面。使用jQuery,我可以“链接”回调,例如以下非常简单的示例: 但是,这导致请求是串行发出的。我宁愿以一种并行方式发出请求,并在完成所有操作后执行页面更新的方法。有什么办法吗? 问题答案: 尝试以下解决方案,该解决方案可以支持任意数量的并行查询:

  • 问题内容: 我有一个ajax问题: 如果循环6次(在我的foreach循环中),我应该对服务器发出6个异步请求。但是在这种情况下,ajax调用是同步调用的,而不是异步调用的。有人知道为什么会这样吗? 问题答案: 好,谢谢。经过几个小时的分析和反思,我意识到了为什么该脚本会同步运行:我打开script.php文件,并注意到了这一点以及该文件的开头: 因此,我对使用会话的php脚本进行了并行ajax调