【问题标题】:Running initializer method on a object called using jQuery getJSON在使用 jQuery getJSON 调用的对象上运行初始化方法
【发布时间】:2011-06-17 14:39:59
【问题描述】:

我在使用 jQuery $.getJSON ajax 调用时遇到问题,但如果我使用任何 jQuery ajax 方法都会出现问题。这是代码的示例。

$.getJSON('cfcs/contact.cfc?method=method', registrantData, function(data){ 
     // Data processing
});

现在的问题是,如果我以这种方式调用我的联系人对象,则不会调用该对象的初始化方法。因此,我在初始化程序中设置的任何依赖项在对象方法中都不可用。因此,例如,如果我的联系人对象如下所示,则通过 Jquery ajax 调用方法函数将失败。

..Contact.cfc
  function init(){
      injectedService  = new injectedService()
  }

 function method(){
     return injectedService.response();
 }

是否有这种情况,因为我不想在需要通过 ajax 调用对象时专门重构我的对象?

谢谢

【问题讨论】:

  • 什么对象的初始化方法?您是否尝试序列化包含函数的对象? JSON 不序列化函数。更多上下文会很有用。
  • 马特,我认为这个例子很清楚。

标签: oop jquery coldfusion


【解决方案1】:

IMO,如果您需要启动 init(),您似乎必须创建一个代理对象来处理 ajax 调用。因此,ajax 与代理对象对话。代理对象创建 cfc 并传递参数并将结果传回。这样,init 就会触发。这最大限度地减少了所有对象的更改以使其工作。

【讨论】:

  • 喜欢这个? $.getJSON('cfcs/ajaxContactProxy.cfc?method=method', registrantData, function(data){ // 数据处理 });
  • 代理(或外观)方法的另一个好处是只有代理必须具有访问权限=“远程”。您的所有其他业务逻辑 CFC 方法都可以是 access="public",甚至位于您的 Web 根目录之外。
  • 其实这点很好,在所有情况下都不太热衷于使功能远程化。
【解决方案2】:

Taffy 这样的服务框架可以帮助解决这个问题。这些请求通过 Taffy 的 REST API 汇集,Taffy 通过从对象工厂请求它们来实例化您的 CFC——我使用 ColdSpring。 ColdSpring 将在调用服务方法之前调用服务对象的 init() 方法。

【讨论】:

  • 不确定页面的去向。修复了指向实际 GitHub 主分支的链接。我让维护者知道了这个问题。
  • 谢谢你,我想我更喜欢使用代理对象来避免给我的整体代码库增加更多的复杂性,但是这个 taffy 框架看起来我可以在多种情况下使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 1970-01-01
  • 2016-09-30
  • 2011-04-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
相关资源
最近更新 更多