JQuery AJAX против URL браузера - PullRequest
0 голосов
/ 03 июня 2010

Я пытаюсь использовать API-интерфейс YouTube, чтобы вернуть список видео пользователя. URL запроса выглядит примерно так:
http://gdata.youtube.com/feeds/api/users/username/uploads
с 'username' является правильным именем пользователя. Это вернет соответствующий URL в браузере. Однако когда я пытаюсь получить доступ к этому URL через функции $ .ajax или $ .get jQuery, используя что-то вроде:

$.ajax({   

    //set parameters
    url: "http://gdata.youtube.com/feeds/api/users/username/uploads",
    type: "GET",

    //on success
    success: function (data) {
      alert("xml successfully captured\n\n" + data);
    },
    //on error
    error:function (XMLHttpRequest, textStatus, errorThrown, data){
      alert(" We're sorry, there seem to be a problem with our connection to youtube.\nYou can access all our videos here: http://www.youtube.com/user/username");
      alert(data);
    }      
  });

  $.get("http://gdata.youtube.com/feeds/api/users/username/uploads", function(data){
    alert("Data Loaded: " + data);
  });

Я получил пустой документ. Есть идеи, почему это так?

1 Ответ

2 голосов
/ 03 июня 2010

Здесь вы применяете политику того же происхождения , предотвращая междоменные запросы ... но в этом случае вы можете делать то, что вам нужно, с JSONP YouTube поддерживает это, если данные JSON являются опцией в вашем коде, обычно это предпочтительнее , поэтому я надеюсь, что это решение для вас). Использование JSONP выглядит следующим образом:

$.ajax({
    url: 'http://gdata.youtube.com/feeds/api/users/username/uploads?alt=json​',
    dataType: 'jsonp'​​​​,
    success: function(data) {
        console.log(data); //entire object here
        //another example
        alert("Feed title: " + data.feed.title.$t);
    }
});​

Вы можете увидеть рабочую демонстрацию здесь, это захватывает фид загрузки видео для nike . Просто исследуйте объект в консоли, чтобы увидеть, какие данные вы хотите, и захватите его:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...