2012-06-20 108 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 
    } 
}