2013-04-01 75 views
0

我試圖解析使用的getJSON和YQL難以將JSON解析爲HTML,結果未定義?

連接效果很好YAHOO數據,我找回我可以看到並登錄到控制檯數據,但我不能再拿到數據打印到JSP頁面中我使用。我用在這裏接受了答案:

http://jsbin.com/umuri5/1/edit

收效甚微。這裏是我的JSP:

,這裏是我的腳本,的script.js:

function requestCrossDomainJSON(site, callback) { 


    if (!site) { 
    alert('No site was passed.'); 
    return false; 
    } 


var yql = 'http://query.yahooapis.com/v1/public/yql?q=select%20Change%20from%20' + site + '%20where%20symbol%20in%20(%22YHOO%22)&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=?'; 

// Request that YSQL string, and run a callback function. 
// Pass a defined function to prevent cache-busting. 

function cbfunc(data) { 
    console.log(data); 
     // If we have something to work with... 
     if (! data.error && data.query.results) { 
      // If the user passed a callback, and it 
      // is a function, call it, and send through the data var. 
      if (typeof callback === 'function') { 
       callback(data.query.results.json); 

      } 

     } 
     // Else, Maybe we requested a site that doesn't exist, and nothing returned. 
     else throw new Error('Nothing returned from getJSON.'); 

    } 
    // Request that YQL string, and run a callback function. 
    // Pass a defined function to prevent cache-busting. 
    $.getJSON(yql, cbfunc); 

// console.log(data.query.results); 


}; 

在該行出現的錯誤:

 for (var i = 0; i < results.userdata.length; i++) { 
      t.tmpl(results.userdata[i]).appendTo(tbody); 
     } 

在控制檯說,它無法讀取屬性userdata未定義。因爲JQuery模板是折舊的,我應該使用更好的方法將這些數據存入我的頁面嗎?如果這仍然是我遇到的問題的有效解決方案,那麼應該如何從被調用的JSON中引用結果功能提供。我試過使用HTML文件代替JSP。

預先感謝您。

回答

1

the URL you're making the request to返回響應的results部分:

results: { 
    quote: { 
      Change: "-0.061" 
    } 
} 

你期待嗎?

如果是這樣,你要搶data.query.results['quote']['Change']data.query.results.quote.Change,而不是試圖通過data.query.results.json步入回調,然後期待通過results.userdata

+0

謝謝你的幫助,但是當我替換成返回錯誤循環(var i = 0; i BTC

+0

沒有必要循環任何東西。只需獲取響應:'data.query.results.quote.Change'並將其傳遞給'tmpl'。你要記住,值得檢查每個子對象是否存在,因爲你正在訪問它們,但這會讓你走。 –

+0

我很抱歉,data.query.results.quote.Change仍然出現問題。刪除循環並簡單地引用 t.tmpl(data.query.results.quote.Change).appendTo(tbody); 我無法訪問返回的數據,它說,在這種情況下,該數據不受tmpl支持。 – BTC