1

我试图从中获取回调:

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

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

4

2 回答 2

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);
});
于 2010-11-10T12:11:49.523 回答
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);
    }
});
于 2010-11-10T12:23:48.120 回答