javascript代码通过ajax返回,但不显示

Maa*_*aaz 5 html javascript php ajax jquery

所以基本上我使用jQuery post对外部php页面进行ajax调用,然后我回显结果,然后在实际页面上显示它.

问题是,每当外部php页面返回一些javascript时,它就不会显示在实际页面上.

正在返回Javascript

<script type="text/javascript">z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506;</script><script type="text/javascript" src="http://www.zunux.com/static/js/embed.js"></script>
Run Code Online (Sandbox Code Playgroud)

我的jQuery

function videoGrabber(mirror_id, video_version, firstVideo_version, videoNumber) {


        jQuery.post("/path/to/my/external/php/file.php", {firstParam : mirror_id, secondParam : video_version, thirdParam : firstVideo_version}, function(data) {
            //this is your response data from serv
        console.log(data);
        jQuery('#videoContainer').html(data);

    });
        return false;
}
Run Code Online (Sandbox Code Playgroud)

现在通常,当返回iframe时,它们在#videoContainerid 中显示完全正常,但是,每当返回javascript嵌入代码时,它都不会在#videoContainerid中显示任何内容.但我可以肯定地确认外部php页面正在返回数据,因为我可以在控制台中看到它.那么,我该如何解决这个问题呢?

Eri*_*ric 1

尝试添加eval()实际运行您正在检索的 Javascript 代码:

function videoGrabber(mirror_id, video_version, firstVideo_version, videoNumber) {
    jQuery.post("/path/to/my/external/php/file.php", {firstParam : mirror_id, secondParam : video_version, thirdParam : firstVideo_version}, function(data) {
        //this is your response data from serv
        console.log(data);
        jQuery('#videoContainer').html(data);
        eval(data);
    });
    return false;
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,请确保您具有良好的安全性 -eval()如果有人可以拦截 ajax 调用并注入自己的代码,则很可能会造成混乱。

哦,由于eval()要尝试仅评估 Javascript 代码,因此您需要将返回代码更改为仅原始 JS 代码(无<script>标签):

z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506;
Run Code Online (Sandbox Code Playgroud)

唯一需要处理的其他事情是:

<script type="text/javascript" src="http://www.zunux.com/static/js/embed.js"></script>
Run Code Online (Sandbox Code Playgroud)

您能否将该脚本包含在调用页面(带有 ajax 代码的页面)中,然后从通过 ajax 获得的代码触发它?所以你的ajax代码最终会返回类似这样的内容:

z_media = "SQgeKL07Nr"; z_autoplay=false; z_width=899; z_height=506; triggerEmbedScript();
Run Code Online (Sandbox Code Playgroud)