我试图从中获得回调:

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

但是,我应该在哪里具有功能并提醒回调中的数据?

有帮助吗?

解决方案

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);
});

其他提示

在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);
    }
});
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top