2012-07-18 64 views
0

方案方法来调用远程脚本

一个页面调用可以在这个网址远程脚本:http://url.to.script/myScript?ScriptParamsList。让我们假设:不需要

  • 异步执行。
  • 显示输出不是必需的。
  • 脚本在按钮单击事件上调用。让处理程序()是JavaScript的事件处理程序:

    function Handler() { //invoke the remote script }

有几种方法可以实现处理程序()函数:

  • 脚本VS img标签

document.write('<script src="http://url.to.script/myScript?ScriptParamsList" type="text/javascript"></script>');

document.write('<img src="http://url.to.script/myScript?ScriptParamsList" />');

  • jQuery的html的()与.load()

$('#TargetDiv').html('<img src="http://url.to.script/myScript?ScriptParamsList" />');

$('#TargetDiv').load('http://url.to.script/myScript?ScriptParamsList');

问题

哪些是优点和缺点?

+0

''?你的意思是''?顺便说一下,你正在比较苹果和橘子...... – 2012-07-18 14:07:15

+0

@Rob W:编辑。谢谢。 – 2012-07-18 14:10:10

回答

1
  • document.write将在文档加载完成后调用当前文档。切勿使用此方法。
  • 使用<script>可以让您从外部域获取请求,而不会受到同一个源策略的阻碍。另外,在服务器的响应中,您可以添加和执行JavaScript,这可能很有用。
  • 使用.html('<img ...>')是没有意义的,除非您的服务器返回带有有意义数据的图像。如果你打算只触发服务器请求,下面会更好:

    new Image().src = 'http://url.to.script/myScript?...'; 
    
  • $('..').load不会如果URL位于因为same origin policy在不同的域,工作。

我投票给new Image().src = '..';方法。如果您不喜欢这种语法,并且想要更多的jQuery,请使用:

$('<img>').attr('src', 'http://...'); 

注意:结果可能会被缓存。如果您不希望发生这种情况,请附加一个随机查询字符串以中断缓存(例如,url = url + '&_t=' + new Date().getTime())。

+0

+1用于缓存的结果备注。 – 2012-07-18 14:24:38