Ajax JQuery 对 Mysql with php 的请求不适用于 JSON


Ajax JQuery request to Mysql with php doesn't work with JSON

我为此工作了几个小时,但我无法在您的网站上找到解决方案。我有一个 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 但我不知道是什么!!