我为此工作了几个小时,但我无法在您的网站上找到解决方案。我有一个 jsonTable.php它连接到数据库并通过回显返回一个 Json:
{
"livres": [{
"titre": "John",
"auteur": "Doe",
"annee": "1989"
},{
"titre": "Anna",
"auteur": "Smith",
"annee": "1989"
},{
"titre": "Peter",
"auteur": "Jones",
"annee": "1989"
}]
}
我使用的JQuery代码很简单,它是:
$.ajax({
url: 'jsonTable.php',
type: 'GET',
dataType : 'json',
/*data: {
json: jsonData
},*/
success: function (response) {
alert(response);
console.log(response);
var trHTML = '';
$.each(response, function (item) {
trHTML += '<tr><td>' + item.titre + '</td><td>' + item.auteur + '</td><td>' + item.annee + '</td></tr>';
});
$('#records_table').append(trHTML);
}
});
问题是它不起作用并返回错误:
未捕获的类型错误:无法使用"in"运算符在 {"livres"中搜索"179":[
{"titre":"John", "auteur":"Doe", "annee":"1989"},
{"titre":"Anna", "auteur":"Smith", "annee":"1989"},
{"titre":"Peter", "auteur":"Jones", "annee":"1989"}
]}
奇怪的是我没有找到那么多例子,我可以自己解决。
response
不包含要循环的数组,response.livres
包含。
因此,您可能只需要将其更改为:
$.each(response.livres, function (item) {
^^^^^^^ here
...
这里是jsonTable.php文件:
<?php
$dbhote = "localhost";
$dbutilisateur = "";
$dbpasse = "";
$dbnom = "";
$erreur = false;
//Connexion MySQL Server
try {
$connexion = new
PDO('mysql:host=' . $dbhote . ';dbname=' . $dbnom, $dbutilisateur, $dbpasse);
} catch (Exception $e) {
echo 'Erreur : ' . $e->getMessage() . '<br />';
echo 'Num : ' . $e->getCode();
$erreur = true;
}
if (!$erreur) {
$query = "SELECT * FROM livres WHERE 1"; //WHERE sexe = '$sexe'";
$req_prepare=$connexion->prepare($query);
$req_prepare->execute();
$encode = array();
while( $ligne = $req_prepare->fetch(PDO::FETCH_ASSOC) ) {
$encode[] = $ligne;
}
$req_prepare->closeCursor();
// echo json_encode($encode);
$encode = '{"livres":[
{"titre":"John", "auteur":"Doe", "annee":"1989"},
{"titre":"Anna", "auteur":"Smith", "annee":"1989"},
{"titre":"Peter", "auteur":"Jones", "annee":"1989"}
]}';
echo json_encode($encode);
}
?>
该指数.php具有:
$.ajax({
url: 'jsonTable.php',
type: 'GET',
dataType : 'json',
/*data: {
json: jsonData
},*/
success: function (response) {
alert(response);
console.log(response);
var trHTML = '';
$.each(response.livres, function (item) {
trHTML += '<tr><td>' + item.titre + '</td><td>' + item.auteur + '</td><td>' + item.annee + '</td></tr>';
});
$('#records_table').append(trHTML);
}
});
我在控制台中收到错误:未捕获的类型错误:无法读取未定义的属性"长度"这来自 $.each 但我不知道是什么!!