2011-08-13 67 views
1

您好我還在學習這個東西JSON ...用AJAX解析有效的JSON?

我想我找到了一個有效的JSON:

http://www.nfl.com/liveupdate/scorestrip/ss.json

問題是我不知道我怎麼能分析該使用AJAX?

這可能嗎?我也聽說過MooTools有什麼區別?

而且,這裏是一些代碼,我剛纔玩弄但似乎並沒有工作:

$.ajax({ 
    type: "GET", 
    url: "http://www.nfl.com/liveupdate/scorestrip/ss.json", 
    dataType: "json", 
    success: function(data) { 
     // Interpret response 
     for (var i = 0; i < data.gms.length; i++) { 
     document.write("Day: " + data.gms[i][0]); 
     document.write("<br/>"); 
     document.write("Time: " + data.gms[i][1]); 
     document.write("<br/><br/>"); 
    } 
    } 
}); 
+0

您提供的代碼看起來很像jQuery,而不是mootools – knittl

+0

哦,對不起,它是JQuery ...但在這個問題上,我想我會問什麼mootools,因爲我聽說過用mootools做這個 – allencoded

+0

我知道它不能使用隱藏的iFrame並從中解析數據? – allencoded

回答

3

JSON代表「JavaScript對象符號」。 AJAX代表「Asynchronous Javascript And XML」。 MooTools是一個交叉瀏覽器JavaScript框架,它爲開發人員提供了一個面向對象的工作流與JavaScript。

不要混淆蘋果和豌豆。所有三種技術經常一起使用,但是是不同的東西。 JSON是描述javascript對象,數組和文字的符號; AJAX用於請求和檢索文檔(包括JSON格式的文檔),MooTools可用於進行AJAX調用(可能以JSON格式 - 或XML片段檢索文檔)。

JSON是純粹的JavaScript,沒有必要以任何方式「解析」它,JavaScript解釋器會爲你做到這一點。 AJAX通常用於描述XMLHttpRequests:http請求源於JavaScript,通常檢索JSON或XML/HTML數據。 MooTools的,您可以用相對較少的代碼,以使用XMLHttpRequest功能的槽其Request class

var request = new Request.JSON({ 
    url: 'http://www.nfl.com/liveupdate/scorestrip/ss.json', 

    onRequest: function(){ 
    alert('We are loading now ...'); // abuse alert(), quite annoying and so 1990 
    }, 

    onComplete: function(jsonObj) { 
    // jsonObj is the retrieved JSON. Access it like you would normal javascript objects and arrays 
    } 

}).send(); 
+0

那麼如何才能在普通的JavaScript中獲得這個JSON? – allencoded

+0

@allencoded:通過使用'XMLHttpRequest'對象。您不能使用它從不同的域中檢索數據(禁止使用同源策略)。 [abdul的答案](http://stackoverflow.com/questions/7051584/parsing-valid-json-with-ajax/7051657#7051657)包含一個鏈接與閱讀材料的JavaScript與JavaScript請求,閱讀。 – knittl

1

我建議你先學HTTP requrest,怎麼回事,當你請求的數據或接收數據上。 一旦你瞭解了基本知識,那麼這將很容易請求和接收數據。

HTTP Request

2

我猜你的問題是COS你做跨域請求和瀏覽器被阻斷requst。要處理來自另一個域的json響應,您需要使用jsonp數據類型。它基本上在您的ajax請求中處理dataType:「jsonp」。

在同一來源策略下,從server1.example.com提供的網頁無法正常連接到server1.example.com以外的服務器或與之通信。 HTML元素是一個例外。利用元素的開放策略,一些頁面使用它們來檢索使用來自其他源的動態生成的JSON格式數據的Javascript代碼。這種使用模式被稱爲JSONP。

請仔細閱讀。欲瞭解更多信息生根粉JSON jQuery中的ajax:http://api.jquery.com/jQuery.ajax/

更新的代碼:

$.ajax({ 
    type: "GET", 
    url: "http://www.nfl.com/liveupdate/scorestrip/ss.json", 
    dataType: "jsonp", 
    success: function(data) { 
     // Interpret response 
     for (var i = 0; i < data.gms.length; i++) { 
     document.write("Day: " + data.gms[i][0]); 
     document.write("<br/>"); 
     document.write("Time: " + data.gms[i][1]); 
     document.write("<br/><br/>"); 
    } 
    } 
}); 

,因爲該網站不似乎是你的控制之下,你可以有腳本打你的網址即您的本地網站的網址,其中您本地服務器現在聯繫實際的URL獲取json併發送它,因爲它是

+0

更新的代碼不起作用:(。我在嘗試學習如何利用跨服務器調用時遇到問題。 – allencoded

+0

您需要在服務器端進行一些更改,您是否也可以這樣做?您使用哪種腳本語言? – Baz1nga

+0

所以你得到你的答案? – Baz1nga