如何使用Javascript从URL获取JSON字符串?

时间:2015-09-21 01:22:25

标签: javascript php json

我试图从网址获取JSON字符串:

http://megarkarsa.com/gpsjson.php

URL回显JSON位置值以字符串形式显示,结果如下:

{"BMS":[{"id":"PR01","type":"prajurit","lat":"-6.253310","long":"107.156219"},{"id":"PR02","type":"prajurit","lat":"-6.224084","long":"106.653069"},{"id":"PR03","type":"kendaraan","lat":"-6.244316","long":"106.649734"}]}

我需要从javascript获取此字符串,因此我稍后可以使用JSON.parse(字符串)解析它。

我曾尝试使用getJson,但似乎无法完成,因为它不是真正的Json值,而是字符串。

我该怎么做?每个建议都将不胜感激。

3 个答案:

答案 0 :(得分:4)

为什么不只是jQuery?

$.get('http://megarkarsa.com/gpsjson.php',function(data){
    console.log(data);
},'json');

或使用php:

<?php
$json=file_get_contents('http://megarkarsa.com/gpsjson.php');
$json=json_decode($json,true);
?>

如果你已经做了所有但仍然没有工作,请尝试:

$.get('http://megarkarsa.com/gpsjson.php',function(data){
    data = eval ("(" + data + ")");
    console.log(data);
});

最后一个解决方案很危险,如果您信任使用的API

,请使用它

答案 1 :(得分:2)

迈克尔·安东尼奥指出,使用Ajax将是实现这一目标的方法。继承我的代码

HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>JSON</title>
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script>
    $(function() {
        $.ajax({
            url: 'http://megarkarsa.com/gpsjson.php',
            type: 'GET',
            dataType: 'html',
            success: function(data, status, xhr)
            {
                $("#json").html(data);
            },
            error: function(xhr, status, error)
            {
                $("#json").html("Error: " + status + " " + error);
            }
        });
    });
    </script>
</head>
<body>
    <div id="json"></div>
</body>
</html>

然而,错误不断出现。以下是请求/响应标头,请注意响应是强制关闭连接。

请求

Host: megarkarsa.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0
Accept: text/html, */*; q=0.01
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://testsites.kalebklein.com/json1/json.html
Origin: http://testsites.kalebklein.com
Connection: keep-alive

响应

Connection: close
Content-Type: text/html
Date: Mon, 21 Sep 2015 01:52:56 GMT
Server: Apache
Transfer-Encoding: chunked
x-powered-by: PHP/5.4.36

另请注意,响应的内容类型是HTML,如果您希望使用我提供的上述Ajax函数解析JSON,则应该是JSON。回来的错误没有任何帮助,这意味着通过进行Ajax调用来切断或拒绝连接,并且没有数据被发回。

答案 2 :(得分:1)

您也可以这样做:

str='{"BMS":[{"id":"PR01","type":"prajurit","lat":"-6.253310","long":"107.156219"},{"id":"PR02","type":"prajurit","lat":"-6.224084","long":"106.653069"},{"id":"PR03","type":"kendaraan","lat":"-6.244316","long":"106.649734"}]}'; //example string
obj=jQuery.parseJSON( (str)); //parse as json
$.each(obj, function (i, item) { //loop through each item in main obj
     $.each(item, function (i, y) { loop through each prop in item
         alert(y.id) //you can access the values like this others can be accessed via the dot notation such as y. prajurit
     });
});