JQuery 动态脚本标记和执行

JQuery dynamic Script-Tag and the Execution

本文关键字:执行 动态 脚本 JQuery      更新时间:2023-09-26

目标是为每个ajax加载script-Tags,执行脚本并显示script-tag的内容(带有视频的iframe)。

场景:该方案是一个视频页面。如果我点击"视频文本",将确定 dom 中的 id。之后,将使用确定的 id 执行 ajax-php 请求。此请求将使用脚本标记进行响应。这就是问题所在:我怎样才能获得 iframe?有人给我小费吗?

ajax-call:

$.ajax({
    type: "GET",
    url: "/get-embed-by-id/"+$(this).find('.views-field-nid .field-content').html(),
    success: postToPageTwo,
    error : postToPageTwo,
    datataype: "html",
});

此调用返回如下所示的脚本

<script type="text/javascript" src="http://exampleurl.de/video/7"></script>

此脚本的内容例如:

(function(){ 
    document.write('<iframe id="video_11" class="mediacube_video" 
     src="http://exampleurl.de/video/11.html?" scrolling="no" 
     align="center" frameborder="0" framespacing="0" width="725" height="409">
     </iframe>');
})()

编辑与 $.getScript 一起使用的代码:

$.getScript("http://exampleurl.de/video/5", scriptResponse);

和脚本响应的代码:

function scriptResponse(data) {
  console.log("data:");
  console.log(data);
}

但数据始终是未定义的。 还是我做错了什么?

jQuery .getScript()为您加载和执行脚本。 无需调用 ajax 来返回 HTML 来加载另一个脚本(这是很多往返),只是为了调用脚本。

$.getScript('http://exampleurl.de/video/7');

如果初始请求确实很重要(也许在后端进行一些解析以确定脚本的链接),则可以让初始响应仅返回脚本的URL。 然后将返回的字符串用于.getScript()

$.get('initial_url',function(returned_url){
    $.getScript(returned_url);
});

但是,往返次数仍然太多。