JQuery动态脚本标记和执行

时间:2012-04-18 08:42:10

标签: javascript jquery ajax drupal

目标是按照ajax加载脚本标签,执行脚本并显示脚本标签的内容(带有视频的iframe)。

场景: 该场景是一个视频页面。如果我点击“视频文本”,将确定dom中的id。之后,将使用确定的id执行ajax-php-request。此请求将使用脚本标记进行重新说明。这是问题:我如何获得iframe? 有人给我一个提示吗?

Ajax的呼叫:

$.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);

和scriptResponse的代码:

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

但数据始终未定义。或者我有什么不对吗?

1 个答案:

答案 0 :(得分:2)

jQuery有.getScript()为您加载和执行脚本。没有必要调用ajax来返回一个html来加载另一个脚本(这是很多往返)只是为了调用一个脚本。

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

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

$.get('initial_url',function(returned_url){
    $.getScript(returned_url);
});
但是,往返太多了。