2012-06-20 39 views
4

我正在學習javascript這幾天,我有問題。我有變量,包含一個網址。我想節省我的另一個變量變量指向的URL的內容...在JavaScript中保存Json變量

第一個變量是這樣的:

var Link = "http://mysite.com/json/public/search?q=variabile&k=&e=1"; 

如果我打開鏈接我看到:

{ 

"count": 1, 
"e": 1, 
"k": null, 
"privateresult": 0, 
"q": "gabriel", 
"start": 0, 
"cards": [ 
    { 
     "__guid__": "cdf8ee96538c3811a6a118c72365a9ec", 
     "company": false, 
     "__title__": "Gabriel Butoeru", 
     "__class__": "entity", 
     "services": false, 
     "__own__": false, 
     "vanity_urls": [ 
      "gabriel-butoeru" 
     ] 
    } 
] 
} 

如何將json內容保存到另一個javascript變量中?

+0

你不能,除非服務器正在訪問支持JSONP – mplungjan

+0

使用AJAX請求,然後'JSON.parse' http://www.json.org/js.html –

+0

了var Link是JavaScript的變量! :S – JellyBelly

回答

9

您需要一個簡單的AJAX請求才能將內容放入變量中。

var xhReq = new XMLHttpRequest(); 
xhReq.open("GET", yourUrl, false); 
xhReq.send(null); 
var jsonObject = JSON.parse(xhReq.responseText); 

請注意,AJAX是same-origin-policy約束,在情況下URL不同,這將失敗。

+0

可能不是來自同一臺服務器。 – mplungjan

1

您可以保存JSON作爲對象以這種方式

參考:Json

var obj = {}; 

obj.name = "test"; 
obj.no = "1234"; 
0

您可以使用這樣

var savings_data = JSON.stringify(your_json_object); 
1

我想這可能會幫助你,使用jQuery ... :)

$.ajax({ 
    beforeSend: function() { DO HERE WHATEVER }, //Show spinner 

      complete: function() { DO HERE WHATEVER }, //Hide spinner 

      type: 'POST', 
      url: Link, 
      dataType: 'JSON', 
      success: function(data){ 
           var data = data; 
           OR IF YOU WANT SEPARATE THE VALUES... 
           var count = data.count; 
           var e = data.e; 
           var k = data.k; 
           ... 
      }        
      });  
0

本示例考慮請求的狀態,並允許您使用點運算符從JSON格式訪問數據。

var request = new XMLHttpRequest(); 
request.open("GET", "mysite.com/json/public/search?q=variabile&k=&e=1", true); 
request.setRequestHeader("Content-type", "application/json"); 
request.send(); 
request.onreadystatechange = function(){ 
    if(request.ready == 4 && request.readyState == 200){ 
      var response = request.responseText; 
      var obj = JSON.parse(response); 
      alert(obj.count); // should return the value of count (i.e Count = 1) 
      alert(obj.e); // should return the value of e (i.e. e = 1) 
      var count = obj.count; //store the result of count into your variable 
      var e = obj.e; //store the result of e into your variable 
      //...and so on 
    } 
}