2013-03-17 20 views
2

我想我的YQL查詢的結果保存在一個JavaScript對象如何將整個YQL結果保存在一個JavaScript對象中?

我的查詢:

SELECT * FROM HTML其中URL = 「http://myurl.com」 和XPath = 「/ html/body/center/table [1]/tr」

我該怎麼去呢?我閱讀了YQL的文檔,但我認爲它非常複雜。 我也搜索了stackoverflow,但它並沒有真正幫助我。

該對象應該像JS中的普通JSON對象。

關於

+0

你真的只是在尋找一種方法來解析對象的JSON字符串響應嗎? – Bergi 2013-03-17 20:33:09

回答

1

您可以使用JSONP方法獲取此數據。腳本:

<script src="http://query.yahooapis.com/v1/public/yql?q=SELECT%20*%20FROM%20html%20WHERE%20url%3D%22http%3A%2F%2Fghse%3A12-13%40www.ghse.de%2Fvplan%2F12%2Fc%2Fc00082.htm%22%20and%20xpath%3D%22%2Fhtml%2Fbody%2Fcenter%2Ftable%5B1%5D%2Ftr%22&format=json&callback=callback"></script> 

回調將用於處理響應:

function callback(data) { 
    console.log(data); 
} 

http://jsfiddle.net/bdCHz/

而且看一看的詳細信息YQL控制檯tester

這只是一個示例,您可以如何手動檢索此JSON。您可以使用jQuery等發出JSONP請求。

+0

好吧,但現在我想要這個對象全局:http://jsfiddle.net/DzdSp/2/ \t但我得到一個錯誤。爲什麼? – maysi 2013-03-17 21:37:02

+1

你不能,因爲你處理異步操作。 – dfsq 2013-03-18 05:22:16

+0

- > http://gidix.de/snips/view/139/2CxZaA/ – maysi 2013-03-20 20:55:39

1

你可能不能夠保存整個事情的一個疙瘩,但你可以通過抓取你特別需要的信息保存數據,它組織成一個陣列,並保存數組:

function getXML(Your_XML_URL) { 
// Build the YQL query 
var qryRSS = 'select * from rss where url=' + '"' + feed + '"'; 

// Initiate the YQL query 
$.getJSON("http://query.yahooapis.com/v1/public/yql", 
    { 
     // These are the settings for your API call 
     q: qryRSS, 
     format: "json" 
    }, 
    // Take the data you got from the YQL server and output it to the screen. The variable "data" holds the JSON you got back from the YQL server. 
    function (data) { 
     var myArrayName = []; 
     // Create an object for each entry. If you don't want every entry in the XML files you can change data.query.results.item.length to whatever number you want. 
     for (var i = 0; i < data.query.results.item.length; i += 1) { 
      var singleEntry = {}; 
      dataLoc = data.query.results.item[i]; 

      var singleEntry.title = dataLoc.title;   //You would replace these 
      var singleEntry.pub = dataLoc.pubDate;   //with the names of the tags 
      var singleEntry.image = dataLoc.thumbnail.url; //in your XML file. 
      var singleEntry.url = dataLoc.link; 
      var singleEntry.desc = dataLoc.description; 

      //Add your object to the array. 
      myArrayName.push(singleEntry); 

     } 
     localStorage.setItem("mySavedItem", JSON.stringify(myArrayName)); 
    }); 
} 

然後你可以稍後檢索該信息:

var myXMLArray = JSON.parse(localStorage.getItem("mySavedItem")); 
console.log(myXMLArray[0].title); 
console.log(myXMLArray[2].pub); 
相關問題