如何将响应返回到对象的实例中?

时间:2010-01-15 21:16:02

标签: javascript

如果您在JavaScript中编写了一个调用远程服务API的类,并且该远程API提供了回调,那么如何将响应返回到发出请求的对象的实例中?

我将尝试为您提供一个非常基本的示例FOO,用于对BAR服务进行跨域调用,该服务提供回调。请忽略通常的安全问题,(我拥有两台服务器)。

function FOO() {
    this.response = null;

    this.execute = function(url) {
        var script = document.createElement('script');
        script.src = url;
        document.getElementsByTagName('head')[0].appendChild(script); 
    }

    this.catch = function(response) {
        this.response = response;
    }
}


var sample = new FOO();

sample.execute('http://barservices.com/sample/?callback={ plshelphere: this.catch}');

我有办法让这项工作成功,但我很好奇这里是否有“接受的方法”。

有人对我有想法吗?

2 个答案:

答案 0 :(得分:0)

如果我理解100%,我不知道,所以让我仔细检查一下:

  • 您想编写自定义JavaScript对象/类。
  • 它应该作为封装与远程Web服务通信的逻辑的外观。
  • 此服务位于不同的域中。

但我不遵循你为什么要创建一个元素。你为什么不使用'Xml Http Request?'

尽管如此,我建议阅读有关Ajax代理“模式”的一些内容:
http://www.springerlink.com/content/mn623501w3h0n166/
http://ajaxpatterns.org/Cross-Domain_Proxy

......和GoF Facade Pattern
http://en.wikipedia.org/wiki/Facade_pattern

答案 1 :(得分:0)

只要在全局命名空间中声明了样本,您就可以使用:

sample.execute('http://barservices.com/sample/?callback=sample.catch');

如果没有,那么还有一些其他选择。 您可以设置一组全局回调并为其添加一个新回调http://gist.github.com/110884 您可以使用具有此类功能的框架(jQuery等)

如果您的服务不关心您的功能是什么样的,您可以将它传递给一个简单的功能。(推特将这些东西剥掉)。

(function(){alert('I work')})