我试图从中获得回调:
$.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'
});
但是在哪里我应该有一个函数并提醒回调数据?
答案 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);
}
});