2010-11-10 2 views
1

Im пытается получить обратный вызов от этого:Функция вызова jQuery 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' 
     }); 

но где в этом я должен иметь функцию и предупредить данные обратного вызова?

ответ

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

Я тоже пробовал, чтобы увидеть мой обновленный вопрос. Но опять же, как я могу затем сделать функцию для обратного вызова и предупредить об этом? – Karem

0

Чтобы сделать запрос JSONP в JQuery, который, я думаю, что вы пытаетесь сделайте, сделайте следующее:

$.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); 
    } 
}); 
Смежные вопросы