使用AJAX解析JSON对象并将其转换为html表格
我正在使用SYMFONY 3,并且我想从使用Ajax的控制器解析接收到的JSON,那里的问题是JSON无法正确读取并返回undefined,这是下面我的代码:使用AJAX解析JSON对象并将其转换为html表格
控制器:
$em = $this->getDoctrine()->getManager();
$RAW_QUERY = 'SELECT id,DO_Date,DL_Design,DL_Qte,DL_MontantHT,DL_MontantTTC FROM `facture_ligne` WHERE facture_id=:id';
$statement = $em->getConnection()->prepare($RAW_QUERY);
// Set parameters
$statement->bindValue('id', $id);
$statement->execute();
$facture = $statement->fetchAll();
$serializer = $this->container->get('jms_serializer');
$reports = $serializer->serialize($facture,'json');
return new Response($reports);
我在树枝文件脚本:
function detailfacture{{ fact.id }} (id) {
var z= new XMLHttpRequest();
z.open("get","{{ path('Ajaxonify',{'id':fact.id}) }})",true);
z.send()
z.onreadystatechange = function result() {
var json=z.responseText;
if(json!="")
{
alert(json);
var tr;
for (var i = 0; i < json.length; i++) {
tr = $('<tr/>');
tr.append("<td>" + json[1].DL_MontantHT + "</td>");
tr.append("<td>" + json[1].DO_Date + "</td>");
tr.append("<td>" + json[1].DL_Qte + "</td>");
$('#tb').append(tr);
}
}
else alert("helo");
}
}
我只是一个静态的JSON测试,它工作正常
这是
console.log(data);
console.log(json);
回报
您需要的JSON解析成一个JavaScript对象使用它,就像在此之前:
var json = JSON.parse(json);
在alert(json)
之后但在for
循环之前插入此行,以便您的脚本看起来像像这样:
function detailfacture{{ fact.id }} (id) {
var z= new XMLHttpRequest();
z.open("get","{{ path('Ajaxonify',{'id':fact.id}) }})",true);
z.send()
z.onreadystatechange = function result() {
var json=z.responseText;
if(json!="")
{
alert(json);
json = JSON.parse(json);
var tr;
for (var i = 0; i < json.length; i++) {
tr = $('<tr/>');
tr.append("<td>" + json[i].DL_MontantHT + "</td>");
tr.append("<td>" + json[i].DO_Date + "</td>");
tr.append("<td>" + json[i].DL_Qte + "</td>");
$('#tb').append(tr);
}
}
else alert("helo");
}
}
如果你只是想读JSON,有很多插件喜欢JSON Formatter。要使用它,只需输出JSON,插件就能识别并激活,格式化JSON以方便阅读。
另一个答案是相当打印JSON:
PHP:$echo "<pre>".json_encode($data, JSON_PRETTY_PRINT)."</pre>";
JS:document.write(JSON.stringify(data, null,4));
我可以读取它看向屏幕快照,我只是想将其改造成一个HTML表格 –
的问题是表有一个百通(西,CEL)和JSON可以像一个数据树XML。只知道JSON响应输出它。我的回答让你有条不紊地阅读它 –
我知道它,但只是不知道为什么它返回undefined:看看这个例子,我遵循它http://jsfiddle.net/8kkg3/ –
警报返回[对象] [对象]我刚才测试过,json已经在控制器中解析 –
我更新了我的答案与完整的示例。如果'alert'显示JSON文本,则JSON尚未被解析,并且不是对象。 –
此外,请注意,我更新了'tr.append()'调用行来使用'i'变量而不是硬编码'1'。 –