Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用api获取json数据_Javascript_Json - Fatal编程技术网

Javascript 无法使用api获取json数据

Javascript 无法使用api获取json数据,javascript,json,Javascript,Json,我使用下面的javascript和html来获取json数据。但我不能让它与这个api一起工作。它只返回空白结果。我已经检查了api链接是否正常工作,所以我认为服务器没有问题。请帮忙 html json数据 {"pool_name":"minerclaim.net","hashrate":60185.64096,"workers":1056,"shares_this_round":168700,"last_block":1531882,"network_hashrate":61752985,"f

我使用下面的javascript和html来获取json数据。但我不能让它与这个api一起工作。它只返回空白结果。我已经检查了api链接是否正常工作,所以我认为服务器没有问题。请帮忙

html

json数据

{"pool_name":"minerclaim.net","hashrate":60185.64096,"workers":1056,"shares_this_round":168700,"last_block":1531882,"network_hashrate":61752985,"fee":1,"payout":"prop"}

正如我前面提到的,您在PHP输出中得到了booltrue,因为

可以使用的PHP文件示例如下:

    <?php

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, "https://xmg.minerclaim.net/index.php?page=api&action=public");
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 0);

        $headers = array();
        $headers[] = "Content-Type: application/json; charset=utf-8";
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Some error:' . curl_error($ch);
            die();
        }

        // You want your browser to think it's JSON, as we return as JSON
        header("Content-Type: application/json; charset=utf-8");
        echo($result);

        curl_close($ch);
?>
您可以将其复制并粘贴到一个新的PHP文件中,将$.ajax url指向该新文件,然后看到神奇的效果。上面的例子对我很有用,因为我正在得到结果


对于javascript,您还可以尝试在`dataType:json'之后添加contentType:application/json,因为这将确保设置返回的头的内容类型。

javascript控制台中是否有错误?您可能遇到了CORS问题。问题是服务器不支持CORS,因此获得此JSON的唯一方法是,如果您在同一个域中执行此脚本,正如上面两篇关于CORS的文章所述,您可以尝试使用PHP cURL返回JSON而不出现此问题。因此,编写一个简单的.php文件,在其中放置一个cURL命令,指向您请求的URL,并将.php文件的URL添加到$.ajax中。@FrankW。我编写了一个简单的.php文件,php确实可以显示json数据。但是我的ajax仍然可以获取json数据。我已经将phpfile指向我的url。我注意到php文件将在json数据的末尾添加booltrue。这会是个问题吗?这是我的php代码$curl=curl\u init;curl_setopt$curl,CURLOPT_URL,'https://xmg.minerclaim.net/index.php?page=api&action=public'; curl_setopt$curl,CURLOPT_头,1$data=curl\u exec$curl;curl_close$curl;var_dump$数据;它将booltrue添加到PHP文件中,因为您使用的是var_dump$data,示例中的$data是curl_exec的输出。下面我给你写一个例子作为答案。
{"pool_name":"minerclaim.net","hashrate":60185.64096,"workers":1056,"shares_this_round":168700,"last_block":1531882,"network_hashrate":61752985,"fee":1,"payout":"prop"}
    <?php

        $ch = curl_init();

        curl_setopt($ch, CURLOPT_URL, "https://xmg.minerclaim.net/index.php?page=api&action=public");
        curl_setopt($ch, CURLOPT_HEADER, false);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_POST, 0);

        $headers = array();
        $headers[] = "Content-Type: application/json; charset=utf-8";
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

        $result = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Some error:' . curl_error($ch);
            die();
        }

        // You want your browser to think it's JSON, as we return as JSON
        header("Content-Type: application/json; charset=utf-8");
        echo($result);

        curl_close($ch);
?>