2016-02-04 66 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