从JSON API获取数据到JS或jquery变量

时间:2013-04-23 05:56:51

标签: php javascript jquery

我正试图从这个API获取一些数据:

https://www.bitstamp.net/api/ticker/

进入jquery变量(最终显示在网页上)。它返回一个JSON字典(更多信息请https://www.bitstamp.net/api/)。

我尝试了几个小时就完成了所有客户端,但意识到我不能因为api不支持跨源请求也不支持JSONP。然后我转到了服务器端代码:

我有一个php文件'test.php',代码如下:

<?php
$homepage = file_get_contents('https://www.bitstamp.net/api/ticker/');
echo $homepage;
?>

然后在我的html页面中,我有以下代码:

<script>
var last = JSON.parse(test.php)["last"]
document.getElementById('apidata').innerHTML=last;
</script>
<span id="apidata"></span>

但我不知道为什么它不起作用!任何人都可以对此有所了解吗?

我认为jquery可能更简单,但如果有人知道如何用JS完成这件事,我也想听听。我也怀疑我的php文件是错误的。

编辑:这是我的php文件http://www.buyabitcoin.co.uk/beta/test/test.php的链接 和我的html文件http://www.buyabitcoin.co.uk/beta/test/test.html

用户名:'test'密码:'test123'

编辑:我也试过

$.getJSON('test.php', function(response) {$("#apidata").html(response.value); });
在HTML中

但无济于事。任何人都可以确认我的php是输出JSON而不是字符串吗?

非常感谢提前

4 个答案:

答案 0 :(得分:1)

您可以使用jQuery ajax函数从php页面获取JSON

$.ajax({
    dataType: "json",
    url: 'test.php',
    data: data,
    success: function(data){
        var last = data.last
        $('#apidata').innerHTML=last;
    }
});

详细了解jQuery.ajax http://api.jquery.com/jQuery.ajax/

答案 1 :(得分:1)

像这样修改你的php文件:

<?php
header('Content-type: application/json');
$homepage = file_get_contents('https://www.bitstamp.net/api/ticker/');
echo $homepage;
?>

header()告诉请求实体它提供了哪种数据。 您请求的网址(https://www.bitstamp.net/api/ticker/)提供此json字符串:

{
    "high": "161.00",
    "last": "154.00",
    "bid": "153.51",
    "volume": "20295.34112055",
    "low": "135.10",
    "ask": "154.00"
}

你的html页面有这个JQuery:

$.getJSON('test.php', function(response) {
    // access the response here
    // e.g. get the volume
    var volume = parseInt(response.volume);
    // the numbers are returned as strings (numbers in quotes), thats why parseInt should be used
});

答案 2 :(得分:0)

您不需要让jQuery只下载JSON字符串并替换div的内容!

function loadXMLDoc() {
    var xmlhttp;
    if (window.XMLHttpRequest) {
        // code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {
        // code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            r = JSON.parse(xmlhttp.responseText);
            document.getElementById("apidata").innerHTML=r;
        }
    }

    xmlhttp.open("GET","/beta/test/test.php",true);
    xmlhttp.send();
}

loadXMLDoc();

答案 3 :(得分:0)

我设法用以下代码做我想做的事。这允许我从JSON中“提取”一个值(在这个例子中,'last'的值)用作一个单独的html文件中的JS变量:

在我的php文件中:

<?php
$ticker = file_get_contents('https://www.bitstamp.net/api/ticker/');   
$obj = json_decode($ticker,true); // Split the JSON into arrays.
echo json_encode(array("myVariable" => $obj['last']));
?>

在我的html文件中:

$.getJSON('test.php', function(data) {
var myVar = data.myVariable }); 

我希望这有助于某人。