首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理跨多个页面重用的ajax get函数?

如何处理跨多个页面重用的ajax get函数?
EN

Stack Overflow用户
提问于 2015-12-22 09:57:43
回答 2查看 49关注 0票数 1

我有一个具有预订/预订功能的web应用程序。我的核心功能之一是检查预订是否与其他预订冲突,并且该函数跨多个页面使用。它的返回数据通常不带有页面,因为它的请求参数依赖于用户输入。换言之:

  • 我有一个ajax函数,它获取预订数据。
  • 它被抽象到它自己的.js文件中,以便于重用
  • ajax函数封装在javascript函数中。

但是,ajax函数不适合我的预期使用。在ajax调用完成之前,包装器函数将不返回任何内容,因为它具有异步特性。如果我需要使用返回的数据执行某件事情,它应该在ajax调用的成功函数中,但是由于我需要根据哪个页面和需要数据的情况发生不同的事情。

我看到了三种解决我的问题的方法。我只是无法决定哪种方法是最好的,或者是否有第四种更好的选择:

1.跳过ajax函数的抽象。换句话说,只要将它复制/粘贴到我需要数据的每个函数中,就可以在任何时候都可以获得成功条件函数。

2.传递一个succes-函数作为参数。如果需要动态发生什么事情,我可以这样做,方法是将一个函数传递给ajax -包装函数,并确保传递的函数接受ajax返回的数据作为它自己的参数。

3.使ajax调用同步.成为可能,但在某种程度上破坏了是jax的概念(实际上我也在使用JSON,这样就可以将ajax转化为jax)。

老实说,我真的看不出任何一个解决方案都是这里的赢家。我非常感谢你的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-22 10:02:29

我建议采用基于事件的方法。在ajax成功的情况下,您可以触发(触发器)一个事件,例如booking-check-complete,并且特定的页面以它需要的方式处理事件。

通过这种方式,您可以保留ajax良好的优点--异步,并保持页面解耦的

对于这种使用,我使用jQuery事件机制,但也有其他可用的库。看看这里- 触发器

例如,在第一页中的

代码语言:javascript
复制
$( document ).on( "booking-check-complete", function( event, param1, param2 ) {
  alert( "Hello from page 1" );
});

在您的第二页上:

代码语言:javascript
复制
$( document ).on( "booking-check-complete", function( event, param1, param2 ) {
  alert( "Hello from page 2" );
});

和ajax的成功:

代码语言:javascript
复制
$( document ).trigger( "booking-check-complete", [ "Custom", "Event" ] );

注意您不需要jQuery来使用描述过的事件--使用普通的javascript,但它与IE不兼容。

代码语言:javascript
复制
var event = new Event('build');

// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);

// Dispatch the event.
elem.dispatchEvent(event);
票数 1
EN

Stack Overflow用户

发布于 2015-12-22 10:02:53

  1. 不是的。这违反了干的
  2. 是。这是惯用的JavaScript。
  3. 不是的。这会锁定UI (并且不推荐同步XHR )。

备选方案2是突出的赢家。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34413005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档