【发布时间】:2010-12-22 09:07:53
【问题描述】:
我正在编写一个 PHP 框架,它允许 PHP 开发人员创建带有表单、网格、选项卡面板和菜单的 ExtJS 接口使用 PHP 类仅限。
例如,为了创建一个 TabPanel,PHP 类 被实例化为 一个 URL 数组,当用户单击选项卡标题。
为了做到这一点,我使用了以下 Javascript 函数,该函数通过 AJAX 调用加载 PHP 页面并在其中执行任何脚本。
function loadViewViaAjax(url) {
Ext.Ajax.request({
url: url,
success: function(objServerResponse) {
var responseText = objServerResponse.responseText;
var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
while(scripts=scriptsFinder.exec(responseText)) {
eval(scripts[1]);
}
}
});
}
我经常读到as in the answers to this question,通常不需要使用 eval(),因为您需要使用 eval() 做的事情通常可以通过其他方式实现强>。我也明白,在通过 AJAX 加载的 PHP 页面中执行脚本会带来安全风险,需要以其他方式锁定,所以如果可能的话,我想找到另一种更安全的方法。
在没有 eval() 的情况下从服务器动态加载和执行 javascript 的另一种方法是什么,这样我就可以拥有与上面脚本相同的功能,即从加载和执行 Javascript 的 TabPanels仅在单击选项卡标题时服务器?
【问题讨论】:
标签: php javascript ajax extjs eval