方案
页面调用此网址提供的远程脚本:http://url.to.script/myScript?ScriptParamsList
。我们假设:
在按钮单击事件上调用脚本。让Handler()成为javascript事件处理程序:
function Handler()
{
//invoke the remote script
}
有几种方法可用于实现Handler()函数:
document.write('<script src="http://url.to.script/myScript?ScriptParamsList" type="text/javascript"></script>');
document.write('<img src="http://url.to.script/myScript?ScriptParamsList" />');
$('#TargetDiv').html('<img src="http://url.to.script/myScript?ScriptParamsList" />');
$('#TargetDiv').load('http://url.to.script/myScript?ScriptParamsList');
问题
哪些优点和缺点?
答案 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()
)。