如何在不使用eval()的情况下从服务器动态加载和执行Javascript?
我正在编写一个PHP框架,它允许PHP开发人员使用PHP类创建带有表单,网格,tabpanel和菜单的ExtJS接口。
例如,为了创建TabPanel,PHP类实例化了一个URL数组,当用户单击选项卡标题时,这些URL会动态加载。
为了做到这一点,我使用以下Javascript函数,它通过AJAX调用加载PHP页面并执行其中的任何脚本。
function loadViewViaAjax(url) {
Ext.Ajax.request({
url: url,
success: function(objServerResponse) {
var responseText = objServerResponse.responseText;
var scripts, scriptsFinder=/<script[^>]*>([sS]+)</script>/gi;
while(scripts=scriptsFinder.exec(responseText)) {
eval(scripts[1]);
}
}
});
}
我经常在这个问题的答案中读到,通常不需要使用eval(),因为你需要用eval()做的事情通常可以通过其他方式来实现。我也理解在通过AJAX加载的PHP页面中执行脚本会带来安全风险,需要以其他方式锁定,所以我想找到另一种更安全的方法来做到这一点。
在没有eval()的情况下从服务器动态加载和执行javascript的替代方法是什么,这样我就可以使用与上面脚本相同的功能,即TabPanels只在选项卡上加载和执行来自服务器的Javascript点击标题?
没有找到相关结果
已邀请:
3 个回复
嗓瑰
如果您想要更安全的方法,我建议研究“JSONP”。
葛瞎说漓
我希望这有帮助。
魄龟呸筹
这可用于加载可重用的代码段。