2016-08-25 2 views
3

Я знаю, что этот вопрос уже задан, но я не мог найти ответ за то, что хочу.Невозможно перебрать объект после ответа ajax

Я пытаюсь перебрать данные, которые я получаю в формате JSON data после ajax Ответ. мой код Javascript является:

function ajaxMe(){ 
    $(function(){ 
     $.ajax({ 
     type : 'GET', 
     url : 's-test.php' 
     }).done(function(data){ 
     values = [data]; 
     alert(data) 
     }) 
    }); 
    } 

После получения данных в values переменной успешно я пытаюсь напечатать его с помощью console.log(JSON.stringify(values)) в console, и это дает результат, как:

["\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.320850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.420850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.520850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.620850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.720850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.820850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-0.920850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-1.320850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-2.320850\" , \"name\" : \"my corporation\"},\r\n {\"lat\" : \"51.508742\", \"ln\" : \"-3.320850\" , \"name\" : \"my corporation\"}\r\n"] 

вместо

[{"lat" : "51.508742", "ln" : "-0.320850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-0.420850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-0.520850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-0.620850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-0.720850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-0.820850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-0.920850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-1.320850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-2.320850" , "name" : "my corporation"}, 
    {"lat" : "51.508742", "ln" : "-3.320850" , "name" : "my corporation"}] 

И не удалось зациклиться на этом object при использовании forEach:

values.forEach(function(v, i){ 
    alert(i); 
}); 

Как это работает.? Спасибо.

+2

Вы conveting на '' data' к string'. Попробуйте использовать 'JSON.parse (data)', чтобы вернуть объект 'JSON'. – Akshay

+0

Если это ваши данные, похоже, что сервер не возвращает данные правильно. – epascarello

+1

Другая жертва необъяснимой тенденции JSON.stringify. В настоящее время нас заливают люди, которые преобразуют структуру данных (JSON) в линейную цепочку символов (строка), а затем не понимают, почему они больше не могут видеть свою структуру данных. Я просто не могу объяснить, как все это сделали. –

ответ

5

Прежде всего добавить простую строку в Jquery код АЯКС dataType: 'json'

$.ajax({ 
     type: 'GET', 
     url: 's-test.php', 
     dataType: 'json', 
     success: function (data) {    
      $.each(data, function (key, value) {      
       alert(value.lat); 
      });    
     } 
    }); 
2

попробовать это:

function ajaxMe(){ 
    $.ajax({ 
    method:"GET", 
    url : 's-test.php', 
    success:function(data){ 
     var obj = $.parseJSON(data);   
     $.each(obj, function (key, value){      
      alert(value.lat); 
      alert(value.ln); 
      alert(value.name); 
     }); 
    } 
    }); 

} 
1

Когда эхо данные из PHP-скрипта, используйте json_encode (ваши данные). Это вернет объект JSON. Затем в запросе AJAX установите «dataType:« json ». Затем вы сможете использовать console.log (данные).

$.ajax({ 
    type : 'GET', 
    url : 's-test.php' 
    dataType: 'json', 
    }).done(function(data){ 
    values = [data]; 
    alert(data) 
    }) 

Вы тогда будете в состоянии использовать цикл для перебора результатов, как это:

for(var i = 0; i < data.legnth; i++){ 
    console.log(data[i]); 
} 

json_encode() documentation

Смежные вопросы