jQuery getScript()回调函数?

时间:2010-11-10 12:04:09

标签: jquery youtube-api getscript

我试图从中获得回调:

$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script', function(data)
{
  alert(data);
});

但警报只是返回“未定义”的警报?我也尝试过:

$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=?', function(data)
{
  alert(data);
});

然后它根本不会返回任何警报。 (我相信这个功能没有运行)。

但是....如果我这样做:

$.getScript( 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script&callback=myfunction');

然后:

function myfunction ( data ) { alert(data); }

然后它可以工作并返回我想要的数据。但我不想这样做。

如何解决这个问题?

也尝试了这个:

        var URL = 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script';
        $.ajax({
        url: URL,
        dataType: 'jsonp',
        jsonpCallback: 'youtubeFetchDataCallback'
        });

但是在哪里我应该有一个函数并提醒回调数据?

2 个答案:

答案 0 :(得分:3)

getScript方法用于执行返回的脚本。当它进入回调时,脚本将已经运行。如果您实际上是在返回数据,比如说JSON,那么您应该使用getJSON来发出跨域请求,数据类型为jsonp。如果你真的得到一个在你的页面上运行的脚本,你实际上不需要回调函数。

引用文档:

  

回调传递返回的JavaScript文件。这通常没用,因为此时脚本已经运行了。

使用getJSON可能看起来像(注意我将字符串拆分以使其更具可读性)

var url = 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>';
$.getJSON( url + '?v=2&alt=json-in-script&callback=?', 
    function(data) {
        alert(data);
});

答案 1 :(得分:0)

要在jQuery中执行JSONP请求,我想,您正在尝试执行的操作,请执行以下操作:

$.ajax({
    url: 'http://gdata.youtube.com/feeds/api/videos/<?php echo $m; ?>?v=2&alt=json-in-script',
    type: 'GET',
    dataType: 'jsonp',
    success: function(data) {
        alert(data);
    }
});