我正在尝试打印数据中的所有内容。我试着用 if (r.result){
msg_typ = 'success';
msg_txt = '<h4>Success!</h4> <p>Issue Note saved</p>';
$('#form-main').trigger('reset');
} else{
msg_typ = 'danger';
msg_txt = '<h4>Error!</h4> <p>'+r.message+'</p>';
}
$.bootstrapGrowl(msg_txt, {
type: msg_typ,
delay: 2500,
allow_dismiss: true
});
检查我的变量是否包含它们:
console.log(data.responseText);
这是我数据库中的所有数据,因此是正确的。问题是,当我尝试执行string(3) "all"
[{"ID":"1","Nome":"Sony KD55XF8577","Prezzo":"999.99","Descrizione":"TV QLED 55","QTA":"3","Categoria":"1","Immagine":"KD55XF8577.jpg"},{"ID":"2","Nome":"Samsung QE49Q6FNATXZT","Prezzo":"699.99","Descrizione":"TV QLED 49'' ","QTA":"4","Categoria":"1","Immagine":"QE49Q6FNATXZT.jpg"},{"ID":"3","Nome":"LG 55SK8000PLB","Prezzo":"499.99","Descrizione":"SMART TV LED 55","QTA":"3","Categoria":"1","Immagine":"55SK8000PLB.jpg"}]
时,我得到 JSON解析错误:意外的标识符“字符串” ,即使您看到的数据格式正确。
JSON.parse(data.responseText).forEach(
编辑:我得到的数组的格式为string(3)[{obj1},{obj2},{obj3}],所以这是该JSON函数的正确格式,对吗?
EDIT2:这就是我生成JSON的方式。首先,我使用了这种方法:
function printData(data){
$("prodotti").innerHTML="";
JSON.parse(data.responseText).forEach(
function(element){
$("prodotti").innerHTML += "<div class=prodotto id=prodotto"+element["ID"]+">" +
"<img src=../prodotti/"+element["Immagine"]+">" +
"<div class=nomeprod>"+element["Nome"]+"</div>" +
"<div class=prezprod>"+element["Prezzo"]+"€</div>" +
"<div class=descprod>"+((element["Descrizione"].length > 47)? element["Descrizione"].substring(0, 47)+"...":element["Descrizione"])+"</div>" +
"<div class=quanprod>rimasti: "+element["QTA"]+"</div></div>";
}
);
}
这是php函数:($ categoria =“ all”)
function request(t){
type = t;
new Ajax.Request("../inventario/get_prodotti.php",
{
parameters: {
type: t
},
dataType: "json",
onSuccess: printData
});
}
getprodotti.php
function getProdotti($categoria){
$db = databaseConnection();
$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "SELECT * FROM Prodotto";
$rows = $db -> query($query);
return $rows -> fetchAll(PDO::FETCH_ASSOC);
}
答案 0 :(得分:2)
您的responseText
string(3) "all"
[{"ID":"1","Nome":"Sony KD55XF8577","Prezzo":"999.99","Descrizione":"TV QLED 55","QTA":"3","Categoria":"1","Immagine":"KD55XF8577.jpg"},{"ID":"2","Nome":"Samsung QE49Q6FNATXZT","Prezzo":"699.99","Descrizione":"TV QLED 49'' ","QTA":"4","Categoria":"1","Immagine":"QE49Q6FNATXZT.jpg"},{"ID":"3","Nome":"LG 55SK8000PLB","Prezzo":"499.99","Descrizione":"SMART TV LED 55","QTA":"3","Categoria":"1","Immagine":"55SK8000PLB.jpg"}]
不是有效的JSON对象。您期望有一个数组,所以您的json应该看起来像这样(为清楚起见缩进)
[
{"ID":"1",....},
{"ID":"2",....},
{"ID":"3",....}
]
所以没有“全部”。输出string(3) "all"
的原因是因为您正在转储变量$type
;删除该行,您的输出应该没问题
答案 1 :(得分:-2)
.forEach()用作循环迭代,并且Passed Argument的数据类型必须为Array,以便可以迭代。检查参数data.responseText的数据类型。在此基础上,进行所需的更新。