如何从URL中提取JSON?

时间:2011-06-22 16:31:08

标签: javascript jquery json

我希望从服务器URL中提取JSON数据,如下所示:

https://dev.randomdomain.com/subdomain

URL本身输出如下数据:

[ 
  { "name": "Not configured", 
    "mac_address": "####c##c####", 
    "online": "false", 
    "rate": "Not configured"},

  { "name": "Not configured", 
    "mac_address": "####c##c####", 
   "online": "false", 
   "rate": "Not configured"},
]

输出的数据发生变化,需要相应更新。我想知道从URL检索JSON数据并保持更新的最佳方法是什么?我查看了jQuery getJSON函数,我不确定它是否可行,因为URL只是输出JSON,它不是.json文件。

我所描述的可以使用JavaScript,jQuery或任何其他开放式方法完成吗?

感谢。

6 个答案:

答案 0 :(得分:1)

$,getJSON('url',function(data){
     alert(data);
    // or alert("sample text"); would do if the json file is handled well enough.
    // if no alert is shown, it's either you're using chrome with an offline version of 
    // your project or you're having an invalid json file
});

请问您使用的浏览器是什么?如果您在离线模式下执行此操作,$.getJSON将无法在Chrome中使用。

即使我不使用Chrome,我也很沮丧为什么json文件没有被处理 - 例如我使用FF或IE。

我发现你不应该把注释放在json文件中,因为它会使它无效。我认为,这是因为.getJSON真正将JSON文件中的数据解析为文本,而不是javascript文件,所以它也会通过注释运行(如果你有的话),并且肯定不会理解它,所以我建议你删除你的json文件中的注释块。

答案 1 :(得分:0)

您是否尝试过使用$.getJSON()?它完全符合您的需要,它只是从服务器读取响应并返回一个json对象。

答案 2 :(得分:0)

首先,您实际上是在尝试从响应中解析JSON。网址是您请求回复的内容。这是一个使用getJSON的简单示例:

$.getJSON('https://dev.randomdomain.com/subdomain', function(data) {
    var output = "";
    $.each(data, function(index, node) {
        output += node.name + ": " + node.mac_address + "<br/>";
    });
    document.write(output);
});

http://jsfiddle.net/YwPzW/1/

答案 3 :(得分:0)

如果您想在客户端(浏览器等)或服务器端处理数据以进行离线处理,您的问题并不十分清楚。

为了在服务器端访问和处理这些数据,您可以使用curl / libcurl来提取数据并将其解码为您选择的语言的对象。例如在php:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://dev.randomdomain.com/subdomain");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

data_as_php_object = json_decode($output);
?>

答案 4 :(得分:0)

函数$.getJSON()是将字符串以JSON格式放入javascript对象中。因此,如果您想获取数据,可以尝试:

$.getJSON("https://dev.randomdomain.com/subdomain",function(data){
   alert(data[0].name);
});

答案 5 :(得分:-1)

您信任JSON字符串的来源吗?如果你这样做,只需使用

alert(eval(dropStringHere));

getJSON jQuery方法也应该可以正常工作。