我正在发送一个 jquery get 请求,如下所示:
$.get($(this).attr("href"), $(this).serialize(), null, "script");
我希望收到的响应将包含在脚本标签中。
我知道浏览器不会执行响应,除非它返回没有脚本标签。通常我会从响应中删除标签,但在这种情况下,我无权访问远程机器上运行的代码,因此无法从源头删除标签。
有没有办法可以从响应客户端中删除脚本标签并执行 javascript?
我正在发送一个 jquery get 请求,如下所示:
$.get($(this).attr("href"), $(this).serialize(), null, "script");
我希望收到的响应将包含在脚本标签中。
我知道浏览器不会执行响应,除非它返回没有脚本标签。通常我会从响应中删除标签,但在这种情况下,我无权访问远程机器上运行的代码,因此无法从源头删除标签。
有没有办法可以从响应客户端中删除脚本标签并执行 javascript?
您应该能够执行以下操作:
$.get($(this).attr("href"), $(this).serialize(), function(data){
var script = $(data).text();
eval(script);
});
或者:
var myScript = new Function($('script#myscript',responseText).text());
myScript();
如果我理解你的问题是正确的,这应该足以从脚本标签中获取文本:
$(response).text()
这对您有帮助吗:http : //docs.jquery.com/Ajax/jQuery.getScript?
Jose Basilio 的回答没问题,但我建议用jQuery 的globalEval函数替换eval ...
$.get($(this).attr("href"), $(this).serialize(), function(data) {
script = $(data).text();
$.globalEval(script);
});
globalEval是调用返回类型为script的 ajax 方法时通常会调用的函数。
这来自 API 文档...
此方法与使用普通 JavaScript eval() 的行为不同,因为它在全局上下文中执行(这对于动态加载外部脚本很重要)。