У меня есть вызов AJAX, который возвращает некоторый JSON следующим образом:
$(document).ready(function () {
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
success: function (data) {
var names = data
$('#cand').html(data);
}
});
});
Внутри div #cand
я получу:
[ { "id" : "1", "name" : "test1" },
{ "id" : "2", "name" : "test2" },
{ "id" : "3", "name" : "test3" },
{ "id" : "4", "name" : "test4" },
{ "id" : "5", "name" : "test5" } ]
Как я могу прокрутить эти данные и поместить каждое имя в div?
Предполагая, что ваша сторона сервера script не устанавливает правильный заголовок ответа Content-Type: application/json
, вам нужно указать jQuery, что это JSON, используя параметр dataType: 'json'
.
Затем вы можете использовать функцию $.each()
для прокрутки данных:
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
dataType: 'json',
success: function (data) {
$.each(data, function(index, element) {
$('body').append($('<div>', {
text: element.name
}));
});
}
});
или используйте метод $.getJSON
:
$.getJSON('/functions.php', { get_param: 'value' }, function(data) {
$.each(data, function(index, element) {
$('body').append($('<div>', {
text: element.name
}));
});
});
настройка dataType:'json'
будет анализировать json для вас
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
dataType:'json',
success: function (data) {
var names = data
$('#cand').html(data);
}
});
иначе вы можете использовать parseJSON
var parsedJson = $.parseJSON(jsonToBeParsed);
вот как вы можете выполнять итерацию
var j ='[{"id":"1","name":"test1"},{"id":"2","name":"test2"},{"id":"3","name":"test3"},{"id":"4","name":"test4"},{"id":"5","name":"test5"}]';
итерации с помощью each
var json = $.parseJSON(j);
$(json).each(function(i,val){
$.each(val,function(k,v){
console.log(k+" : "+ v);
});
});
{"0":{"level1":"done","level2":"done","level3":"no"}}
как можно извлечь это из каждой переменной? я пытался так, используя метод $.each
но возвращает неопределенный var level1 = ele[0].level1;
json[0]
Попробуйте использовать следующий код, он работает в моем проекте:
//start ajax request
$.ajax({
url: "data.json",
//force to handle it as text
dataType: "text",
success: function(data) {
//data downloaded so we call parseJSON function
//and pass downloaded data
var json = $.parseJSON(data);
//now json variable contains data in json format
//let display a few items
for (var i=0;i<json.length;++i)
{
$('#results').append('<div class="name">'+json[i].name+'</>');
}
}
});
$(document).ready(function () {
$.ajax({
type: 'GET',
url: '/functions.php',
data: { get_param: 'value' },
success: function (data) {
for (var i=0;i<data.length;++i)
{
$('#cand').append('<div class="name">data[i].name</>');
}
}
});
});
Используйте этот код.
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "Your URL",
data: "{}",
dataType: "json",
success: function (data) {
alert(data);
},
error: function (result) {
alert("Error");
}
});
ok У меня была та же проблема, и я исправил ее так, удалив []
из [{"key":"value"}]
:
- в вашем php файле сделайте так, чтобы вы печатали как это
echo json_encode(array_shift($your_variable));
- в вашей функции успеха сделайте это
success: function (data) {
var result = $.parseJSON(data);
('.yourclass').append(result['your_key1']);
('.yourclass').append(result['your_key2']);
..
}
а также вы можете его закодировать, если хотите
var jsonP = "person" : [ { "id" : "1", "name" : "test1" },
{ "id" : "2", "name" : "test2" },
{ "id" : "3", "name" : "test3" },
{ "id" : "4", "name" : "test4" },
{ "id" : "5", "name" : "test5" } ];
var cand = document.getElementById("cand");
var json_arr = [];
$.each(jsonP.person,function(key,value){
json_arr.push(key+' . '+value.name + '<br>');
cand.innerHTML = json_arr;
});
<div id="cand">
</div>
Данные Json
data = {"clo":[{"fin":"auto"},{"fin":"robot"},{"fin":"fail"}]}
При извлечении
$.ajax({
//type
//url
//data
dataType:'json'
}).done(function( data ) {
var i = data.clo.length; while(i--){
$('#el').append('<p>'+data.clo[i].fin+'</>');
}
});
contentType: 'application/json'
в вашей функции$.ajax
и JSON сериализовать параметрdata
, например:data: JSON.stringify({ get_param: 'value' })
. Затем в вашем php-скрипте вам потребуется json decode, чтобы вернуть исходный объект.