Вопрос

Я пытаюсь получить обратный вызов от этого:

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

Но предупреждение просто возвращает предупреждение с «undefined»? И я также пробовал:

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

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

Это было полезно?

Решение

То stackcript. Метод используется для выполнения возвращенного скрипта. К тому времени, когда он входит в ваш обратный вызов, сценарий уже будет запущен. Если вы на самом деле возвращаете данные, скажите 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);
});

Другие советы

Чтобы сделать запрос 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);
    }
});
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top