2012-09-03 143 views
0

我想讀轉換爲JSON格式與谷歌API RSS饋送;我已經提出了一些警報,但當我運行我的頁面時,我看不到它們!爲什麼?神祕AJAX JSON請求問題的jQuery

這裏是我的jQuery代碼:

function getFeed(url){ 
     $('#screen #content').html(""); 
     $.ajax({ 
      url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q='+url, 
      crossDomain: true, 
      dataType: 'json', 
      success: function(data) { 
       alert(3); 
       $.each(data.entries, function(i,results){ 
        alert(1); 

       }); 
      } 
     }); 
    } 
    getFeed('http://www.nytimes.com/services/xml/rss/nyt/Science.xml'); 

謝謝!

+0

你可以閱讀更多關於它的搜索 'JSONP' 在這裏: http://api.jquery.com/jQuery.ajax/

或在這裏。 。也許你的要求是無效的或類似的(錯誤的URL等) – tuxtimo

+0

您可能希望URL編碼'url' – Musa

+0

什麼是在開發者控制檯輸出的東西嗎?您是否嘗試過附加錯誤處理程序並讀取錯誤消息? –

回答

3

Ajax請求是由瀏覽器的同源策略的限制。你無法通過AJAX是不是在同一個域作爲你的腳本在運行頁面直接與服務器 所以,你需要使用JSONP功能從jQuery的AJAX:

$(document).ready(function() { 

     function getFeed(url) { 
      $.ajax({ 
       url: 'https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=' + url, 
       crossDomain: true, 
       dataType: 'jsonp', 
       success: function (data) { 
        console.log(data); 

       }, 
       error: function (data) { 
        console.log(data); 
       } 
      }); 
     } 
     getFeed('http://www.nytimes.com/services/xml/rss/nyt/Science.xml'); 

    }); 

的dataType :'jsonp'是這裏的關鍵字。如果你想獲得的json與jQuery使用$ .getJSON ..並註冊一個完整的處理程序 http://bob.ippoli.to/archives/2005/12/05/remote-json-jsonp/

+0

非常感謝! – Random78952

+0

@Rochester:請注意,服務器也必須支持JSONP。這不是一個神奇的子彈,可以讓你跨域請求到所有域。 –

0
  1. 您所請求的主機也可能不允許第三方或跨瀏覽器ajax調用。
  2. 如果從請求期待JSON作爲結果,使用$.getJSON()

感謝 拉胡爾

+0

我已經嘗試使用的getJSON,它的工作原理,但爲什麼我的Ajax請求這麼想的工作? – Random78952

+1

嘗試在URL中提供您的回調函數。它應該工作,因爲getJSON()在內部調用$ .ajax本身。 – Rahul