2016-08-05 7 views
-1

JSONファイルから値を取得する方法:各私は怒鳴るようにJSONファイル内のデータテーブルにデータを送信しよう

$ (document).ready(function() { 
$.ajax({ 
    type: 'GET', 
    url: '../search.json', 
    success: function(data) { 
     $.each(data, function(i, data) { 
      var body = "<tr>"; 
      body += "<td>" + data.name + "</td>"; 
      body += "<td>" + data.born + "</td>"; 
      body += "<td>" + data.natio_t + "</td>"; 
      body += "<td>" + data.role_t + "</td>"; 

      body += "</tr>"; 
      $('.datatable-ajax-source table').append(body); 
     }); 

:私の関数である

"responseHeader":{ 
    "status":0, 
    "QTime":2, 
    "params":{ 
     "q":"vba", 
     "indent":"true", 
     "fl":"name,role_t,born,natio_t", 
     "wt":"json"}}, 
    "response":{"numFound":7,"start":0,"docs":[ 
     { 
     "name":"Khouli", 
     "born":["1978-04-03T00:00:00Z"], 
     "natio_t":"tunisien", 
     "role_t":"Consultant"}, 
     { 
     "name":"Atayi", 
     "born":["1987-06-24T00:00:00Z"], 
     "natio_t":"Francaise", 
     "role_t":"Consultant"} 
} 

:私のJSONファイルの exempleデータをしかし、私は価値のないテーブルを手に入れます

jsonファイルからこの値を取得する方法

+0

JSONデータはさまざまな方法で無効です。有効なJSONを投稿してください。 –

+0

明らかに 'data'は配列ではありません。なぜあなたはそれが私を超えているように扱うでしょう。 –

答えて

0

あなたの入力データが間違っているようだ。ここに訂正されたデータ:

{ 
"responseHeader":{ 
    "status":0, 
    "QTime":2, 
    "params":{ 
     "q":"vba", 
     "indent":"true", 
     "fl":"name,role_t,born,natio_t", 
     "wt":"json"}}, 
     "response":{"numFound":7,"start":0,"docs":[ 
     { 
     "name":"Khouli", 
     "born":["1978-04-03T00:00:00Z"], 
     "natio_t":"tunisien", 
     "role_t":"Consultant"}, 
     { 
     "name":"Atayi", 
     "born":["1987-06-24T00:00:00Z"], 
     "natio_t":"Francaise", 
     "role_t":"Consultant"} 
    ] 
} 
} 

適切なJSこれを処理する:

$(document).ready(function() { 
$.ajax({ 
type: 'GET', 
url: '../search.json', 
success: function(data) { 
    // Data is the root node of your json response. 
    // You need to navigate through the "docs" node. 
    if(data.response.docs && data.response.docs.length > 0) 
    { 
    $.each(data.response.docs, function(i, item) { 
     var body = "<tr>"; 

     body += "<td>" + item.name + "</td>"; 
     body += "<td>" + item.born + "</td>"; 
     body += "<td>" + item.natio_t + "</td>"; 
     body += "<td>" + item.role_t + "</td>"; 

     body += "</tr>"; 
     $('.datatable-ajax-source table').append(body); 
    } 
    }); 

あなたは適切な値を取得していないr datadocs.data[i](この場合はitem)が.each()に定義されているはずです。

+0

@DidierAupestあなたの答えを作ることができます。しかし、私はこの解決策を試してみると、このエラーが発生します。jquery.min.js:4 Uncaught TypeError:undefinedeach @ jquery.min.jsのプロパティ 'length'を読み取ることができません:4success @ application.js: 111c @ jquery.min.js:4fireWith @ jquery.min.js:4k @ jquery.min.js:6r @ jquery.min.js:6 – MedKostali

+0

私は答えを更新しました。 ;) –

+0

これはまだ同じエラーですapplication.js:116 Uncaught TypeError:このligneの未定義のプロパティ 'length'を読み込めませんif(data.response.docs && data.docs.length> 0) – MedKostali

-2

あなたはjsonを返そうとしているとは言わなかったので、JSON文字列をサーバーの応答からプレーンテキストとして受け入れ、プレーンテキストとしてdataに渡しました。

、ネイティブJSデータ構造に応答を自動解析れる、.getJSON()を使用するか、または

$.ajax(
    ... 
    dataType: "json" 
    ... 
); 
+0

これは問題の一部であるかもしれませんが、サーバーが 'Content-Type'ヘッダーを適切に設定すると、jQueryはそれを解析する必要があります。いずれにせよ、私が知ることから、彼は構造体をより深くトラバースする必要がありますが、現在は無効です。 –

関連する問題