2016-02-04 67 views
2

我在此工作了好几个小时,但无法在您的网站上找到解决方案。我有一个jsonTable.php谁连接到数据库,并通过回声返回JSON:使用php向Mysql发送Ajax JQuery请求不适用于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); 
    } 
}); 

的问题是它不工作,返回错误:

Uncaught TypeError: Cannot use 'in' operator to search for '179' in {"livres":[
{"titre":"John", "auteur":"Doe", "annee":"1989"},
{"titre":"Anna", "auteur":"Smith", "annee":"1989"},
{"titre":"Peter", "auteur":"Jones", "annee":"1989"}
]}

奇怪的是我没有找到那么多的例子,我可以通过我自己来解决它。

+1

提供_jsonTable.php_的代码 – Kaspars

+0

response = $ .parseJSON(response); – devpro

回答

3

response不包含要循环的数组,response.livres

所以,你可能只需要将其更改为:

$.each(response.livres, function (item) { 
       ^^^^^^^ here 
    ... 
+0

我做了更改,现在我有:Uncaught TypeError:无法读取未定义的属性“长度”。错误。我不使用$ .each中的长度。你能告诉我吗? – user3162862

+0

@ user3162862'console.log(response);'的确切输出是什么? – jeroen

+0

Uncaught TypeError:无法读取未定义的属性“长度” – user3162862

0

这里是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);   
} 
?> 

的index.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); 
    } 
}); 

我在控制台收到错误: Uncaught TypeError:无法读取未定义的属性“长度” 这来自$ .each,但我不知道是什么!

+0

你应该添加到您的问题,而不是作为一个答案。请注意,现在你在编码之前用一个字符串覆盖你的数组,并且这会弄乱你的输出,所以你需要首先删除它。 – jeroen

+0

我怎样才能得到一个问题的格式,因为在评论中我几乎不能写代码。 – user3162862

+0

我找到了答案。这是在$ .each的函数中添加一个id。作为:$。each(response.livres,function(id,item){ – user3162862