J'ai un appel AJAX qui renvoie du JSON comme celui-ci:
$(document).ready(function () {
$.ajax({
type: 'GET',
url: 'http://example/functions.php',
data: { get_param: 'value' },
success: function (data) {
var names = data
$('#cand').html(data);
}
});
});
À l'intérieur de la #cand
div, je vais obtenir:
[ { "id" : "1", "name" : "test1" },
{ "id" : "2", "name" : "test2" },
{ "id" : "3", "name" : "test3" },
{ "id" : "4", "name" : "test4" },
{ "id" : "5", "name" : "test5" } ]
Comment puis-je parcourir ces données et placer chaque nom dans un div?
contentType: 'application/json'
paramètre dans votre$.ajax
fonction et JSON sérialiser ledata
paramètre, comme ça:data: JSON.stringify({ get_param: 'value' })
. Ensuite, dans votre script php, vous devrez décoder json pour récupérer l'objet d'origine.{"0":{"level1":"done","level2":"done","level3":"no"}}
savoir comment extraire cela dans chaque variable? J'ai essayé comme ça en utilisant la$.each
méthode mais retourne var undefinedlevel1 = ele[0].level1;
Le paramètre
dataType:'json'
analysera JSON pour vous:$.ajax({ type: 'GET', url: 'http://example/functions.php', data: {get_param: 'value'}, dataType: 'json', success: function (data) { var names = data $('#cand').html(data); } });
Ou bien vous pouvez utiliser
parseJSON
:var parsedJson = $.parseJSON(jsonToBeParsed);
Ensuite, vous pouvez itérer ce qui suit:
var j ='[{"id":"1","name":"test1"},{"id":"2","name":"test2"},{"id":"3","name":"test3"},{"id":"4","name":"test4"},{"id":"5","name":"test5"}]';
... en utilisant
$().each
:var json = $.parseJSON(j); $(json).each(function (i, val) { $.each(val, function (k, v) { console.log(k + " : " + v); }); });
JSFiddle
la source
{"0":{"level1":"done","level2":"done","level3":"no"}}
savoir comment extraire cela dans chaque variable? J'ai essayé comme ça en utilisant la$.each
méthode mais retourne var indéfinielevel1 = ele[0].level1;
json[0]
Essayez le code suivant, cela fonctionne dans mon projet:
//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's display a few items for (var i=0;i<json.length;++i) { $('#results').append('<div class="name">'+json[i].name+'</>'); } } });
la source
$(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</>'); } } }); });
la source
Utilisez ce code.
$.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"); } });
la source
ok j'ai eu le même problème et je le corrige comme ça en supprimant
[]
de[{"key":"value"}]
:echo json_encode(array_shift($your_variable));
success: function (data) { var result = $.parseJSON(data); ('.yourclass').append(result['your_key1']); ('.yourclass').append(result['your_key2']); .. }
et aussi vous pouvez le boucler si vous le souhaitez
la source
Je suis d'accord avec toutes les solutions ci-dessus, mais pour souligner quelle est la cause première de ce problème, cet acteur majeur dans tout le code ci-dessus est cette ligne de code:
dataType:'json'
lorsque vous manquez cette ligne (qui est facultative), les données renvoyées par le serveur sont traitées comme une chaîne complète (qui est le type de retour par défaut). L'ajout de cette ligne de code informe jQuery de convertir la chaîne json possible en objet json.
Tous les appels jQuery ajax doivent spécifier cette ligne, s'ils attendent un objet de données json.
la source
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>
la source
Données Json
data = {"clo":[{"fin":"auto"},{"fin":"robot"},{"fin":"fail"}]}
Lors de la récupération
$.ajax({ //type //url //data dataType:'json' }).done(function( data ) { var i = data.clo.length; while(i--){ $('#el').append('<p>'+data.clo[i].fin+'</>'); } });
la source
$.ajax({ url: '//.xml', dataType: 'xml', success: onTrue, error: function (err) { console.error('Error: ', err); } }); $('a').each(function () { $(this).click(function (e) { var l = e.target.text; //array.sort(sorteerOp(l)); //functionToAdaptHtml(); }); });
la source