自定义jQuery请求对象 - 我应该将我的实现移动到我的标记吗?

时间:2010-12-08 23:43:44

标签: javascript jquery ajax oop web-applications

我正在开发一个前端请求/数据管理系统,以便clean up/organize my API calls/refactor我如何与后端平台进行交互。我正在扩展jquery ajax api调用与它的接口,我正在寻找关于在哪里坚持api特定实现的一些建议。

请记住,这是一个网络应用程序平台,我正在尝试更轻松地管理前端组件

目标是从......等定义请求。

var requestObj = new Object();
requestObj.callback = function(responseObj){deleteUserComplete(responseObj); };
requestObj[0] = new Object();
requestObj[0].module = "usermanager";
requestObj[0].context = "#someTable";
requestObj[0].action = "DELETE_USER";
requestObj[0].dataObj = new Object();
requestObj[0].dataObj.userId = $("#ui-tabs-4 .az-switch-panel-off input[name$=userId]").val();

要...

$("button.apiSubmit").apiManager('submitApi');

var options = {};
options.callback = someFunction;
options.context = "#someTable";
//etc...
$("button.apiSubmit").apiManager('submitApi', options);

我确信你明白了......但是我想将丑陋的请求对象创建移动到工厂类型的对象(主要是将表单处理成我的后端理解的对象)并移动api特定的实现(模块) ,标记,行动,背景等)。

现在提出问题......

1)将特定于api的请求信息移至标记有哪些好处/陷阱?
2)(再次,非常确信移动请求信息到标记是正确的移动)类标签或html5 data attributes(x浏览器不是问题......它们是内部应用程序)?

EX:类属性将是...... class="apiButton apiButton-module-MODULE_NAME apiButton-action-ACTION_NAME" - 显然有点难看......但是可以直接管理htis。

3)有没有其他选择让我的api请求更可重用/更容易阅读?这是我与php沟通的唯一方式,所以它非常...... 非常这个系统非常重要。

1 个答案:

答案 0 :(得分:1)

1)虽然我有点同意Marcel Korpel关于使用HTML5数据属性的看法,但我认为使用标记明确地提出了一些潜在的问题:首先,你将API /后端内部暴露给最终用户,这是永远的理想的,其次是它的挥发性,因为它可以很容易地改变(firebug,js)并弄乱与该元素相关的行为。

2)使用jQuery的.data()方法存储相关信息越优雅(但实施方法稍难) - 这样可以保持标记清晰,并且仍然可以灵活地存储尽可能多的信息。你想要与元素相关。它也是最终用户的“隐藏”(确保firebug / js可以访问它,但它在标记中比在右边更难)。我基本上有两种方法可以考虑如何实现这个:-1 - 如果你动态创建标记然后将元素包装在jQuery对象中并在将元数据插入DOM之前应用元数据,如果是使用PHP创建,您可以将其存储为“rel”或“rev”中的序列化字符串或其他一些很少使用的属性,然后使用jQuery来获取它,存储元数据并清除属性。

3)然而,现在我考虑一下,虽然使用.data()更优雅,但我认为这并不会让它更容易理解,因为你有效地隐藏了应用程序内部。也许您可以实现getter / setter来检索元数据或其他内容。