如果您在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}');
我有办法让这项工作成功,但我很好奇这里是否有“接受的方法”。
有人对我有想法吗?
答案 0 :(得分:0)
如果我理解100%,我不知道,所以让我仔细检查一下:
但我不遵循你为什么要创建一个元素。你为什么不使用'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')})