【问题标题】:JSON from url to PHP tableJSON 从 url 到 PHP 表
【发布时间】:2019-03-14 00:36:56
【问题描述】:

我正在从下面的 url 获取数据

https://www.cmegroup.com/CmeWS/mvc/Margins/OUTRIGHT?1=1&sortField=exchange&sortAsc=true&exchange=NYM&sector=DME+Products&pageSize=500&pageNumber=1&_=1537972316703

我想在我的页面上显示一个 html 表格, 如下图所示 HTML Table

谁能帮助我在 javascript 或 php 的帮助下获得所需的表格。

更新: 下面是我正在尝试的代码,不确定

<script>
var url = "https://www.cmegroup.com/CmeWS/mvc/Margins/OUTRIGHT?1=1&sortField=exchange&sortAsc=true&exchange=NYM&sector=DME+Products&pageSize=500&pageNumber=1&_=1537972316703";
 
// send AJAX request
var req = new XMLHttpRequest();
req.onload = function() {
	generateHTMLTable(req.response);
}
req.open("GET",url);
req.send();
 
// generate HTML string and insert it
function generateHTMLTable(data) {
	var str = "";
	for(var row=0; row<data.length; row++) {
		str += "<tr>"; // open HTML row
		for(var col=0; col<data[row].length; col++)
			str += "<td>" + data[row][col].name + "</td>";
		str += "</tr>"; // close HTML row
	}
	
	// assumes the table element has id "table":
	// <table id="table"></table>
	var table = document.getElementById("table");
	table.innerHTML = str;
}
</script>

【问题讨论】:

  • 向我们展示您迄今为止尝试过的代码,以便我们为您提供帮助
  • 嗨添加了我正在尝试但没有成功的代码
  • 希望对您有所帮助.. stackoverflow.com/questions/50873764/…

标签: javascript php json


【解决方案1】:

试试这个,可能对你有帮助

在 html 上

getdata.php

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://www.cmegroup.com/CmeWS/mvc/Margins/OUTRIGHT?1=1&sortField=exchange&sortAsc=true&exchange=NYM&sector=DME%20Products&pageSize=500&pageNumber=1&_=1537972316703",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  $status = false;
  $data = "cURL Error #:" . $err;
} else {
  $status = true;
  $data = $response;
}
$json = array('status'=>$status, 'data'=>$data);
header('Content-Type: application/json');
echo json_encode($json, JSON_PRETTY_PRINT);

?>

在 html 上使用 jquery lib javascript

<table>
  <thead>
    <tr>
      <th>exchange</th>
      <th>sector</th>
      <th>name</th>
    </tr>
  </thead>
  <tbody id="tbody"></tbody>
</table>
<script>
$.getJSON(getdata.php, function(record){
  if (record.status!=false) {
    var tbody = "<tr><td colspan=3>"+record.data+"</td></tr>";
      $("#tbody").html(tbody);
  }else{
    for (var i = 0; i < record.data.marginRates.length; i++) {
      var tbody = "<tr><td>"+record.data.marginRates[i].exchange+"</td><td>"+record.data.marginRates[i].sector+"</td><td>"+record.data.marginRates[i].name+"</td></tr>";
      $("#tbody").html(tbody);
    }
  }

});
</script>

【讨论】:

  • 您好,谢谢您的帮助,但是它显示的是空白表。 [link]provanic.org/jsontable我做错了吗?
【解决方案2】:

使用 PHP(如果需要,您仍然可以使用 AJAX 检索数据,但您的端点(url)不允许跨域请求 - 您可以使用诸如 https://cors.io 之类的 CORS 代理):

<?php
$url = "https://www.cmegroup.com/CmeWS/mvc/Margins/OUTRIGHT?1=1&sortField=exchange&sortAsc=true&exchange=NYM&sector=DME+Products&pageSize=500&pageNumber=1&_=1537972316703";
$json = file_get_contents($url);
$arr = json_decode($json);

echo '<table>';
echo '<th>exchange</th><th>sector</th><th>name</th><th>product family</th><th>start period</th><th>end period</th><th>maintenance rate</th><th>vol scan maintenance rate</th>';
foreach($arr->marginRates as $key => $value) {
    echo '<tr style="border: 1px solid black;">';
    echo '<td style="border: 1px solid black;">' . $value->exchange . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->sector . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->name . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->productFamily . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->startPeriod . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->endPeriod . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->maintenanceRate . '</td>';
    echo '<td style="border: 1px solid black;">' . $value->volScanMaintenanceRate . '</td>';
    echo '</tr>';
}
echo '</table>';

你应该使用你自己的样式规则(CSS sheet),我猜,我只是复制粘贴了这个例子的黑色边框,这确实不是很整洁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2016-07-11
    • 1970-01-01
    • 2016-08-06
    • 2017-06-03
    • 2015-10-24
    相关资源
    最近更新 更多