2016-08-05 6 views
-1

Я пытаюсь отправить данные в DataTable в JSON файл как ниже: Exemple данные моего JSon файла:как получить значение каждого из JSon файла

"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"} 
} 

Это моя функция:

$ (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); 
     }); 

Но я получаю таблицу с undifined значением this is my table result

как получить это значение из 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); 
    } 
    }); 

Вы не получаете правильное значение fo r data. Вы должны получить docs.data[i], который в данном случае item, как определено в .each().

+0

спасибо @DidierAupest ваш ответ сделать с тех пор, Но когда я пытаюсь это решение, я получаю этот ERROR jquery.min.js: 4 Uncaught TypeError: Не могу прочитать длину свойства undefinedeach @ jquery.min.js: 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: Невозможно прочитать длину свойства undefined в этом ligne if (data.response.docs && data.docs.length> 0) – MedKostali

-2

Вы не сказали jquery, что вы ожидаете от json, поэтому он принял строку JSON из ответа сервера как открытый текст и передает ее в data в виде обычного текста.

Либо использовать .getJSON(), который будет автоматически анализировать ответ в нативной структуры данных JS или

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

Верно, что это может быть частью проблемы, но если сервер правильно устанавливает заголовок «Content-Type», jQuery должен проанализировать его. В любом случае, из того, что я могу сказать, ему нужно пройти глубже в структуру, которая в настоящее время недействительна. –