调用远程脚本的方法

时间:2012-07-18 14:05:55

标签: javascript web-applications

方案

页面调用此网址提供的远程脚本:http://url.to.script/myScript?ScriptParamsList。我们假设:

  • 不需要异步执行。
  • 不需要显示输出。
  • 在按钮单击事件上调用脚本。让Handler()成为javascript事件处理程序:

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

有几种方法可用于实现Handler()函数:

  • 脚本与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()vs .load()

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

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

问题

哪些优点和缺点?

1 个答案:

答案 0 :(得分:1)

    在文档加载后调用时,
  • document.write将替换当前文档。切勿使用此方法。
  • 使用<script>可以从外部域获取请求,而不会受到相同原始策略的阻碍。此外,在服务器的响应中,您可以添加和执行JavaScript,这可能很有用。
  • 使用.html('<img ...>')没有任何意义,除非您的服务器返回包含有意义数据的图像。如果您只想触发服务器请求,则以下情况会更好:

    new Image().src = 'http://url.to.script/myScript?...';
    
  • 如果网址位于其他域,
  • $('..').load将不起作用,因为same origin policy

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

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

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