加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在不使用eval()的情况下从服务器动态加载和执行Javas

发布时间:2020-12-13 21:39:36 所属栏目:PHP教程 来源:网络整理
导读:我正在编写一个 PHP框架,它允许 PHP开发人员使用PHP类创建带有表单,网格,tabpanel和菜单的ExtJS接口. 例如,为了创建TabPanel,PHP类实例化了一个URL数组,当用户单击选项卡标题时,这些URL会动态加载. 为了做到这一点,我使用以下Javascript函数,它通过AJAX调用
我正在编写一个 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]);
            }
        }
    });
}

我经常阅读as in the answers to this question,通常不需要使用eval(),因为你需要用eval()来完成其他方式.我也理解在通过AJAX加载的PHP页面中执行脚本会带来安全风险,需要以其他方式锁定,所以我想找到另一种更安全的方法来做到这一点.

在没有eval()的情况下从服务器动态加载和执行javascript的替代方法是什么,这样我就可以使用与上面脚本相同的功能,即TabPanels只在选项卡上加载和执行来自服务器的Javascript点击标题?

解决方法

您始终可以通过脚本注入加载其他Javascript.如果您创建一个新的SCRIPT元素并将其放在DOM中,浏览器将下载该脚本并执行它.
作为简化示例,您可以使用:

var newScript = document.createElement('script'); 
newScript.setAttribute('src','http://www.example.com/url/of/your/script.php'); 
document.body.appendChild(newScript);

如果您想要更安全的方法,我建议研究“JSONP”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读