J'utilise la fonction suivante pour envoyer un formulaire via jQuery AJAX:
$('form#add_systemgoal .error').remove();
var formdata = $('form#add_systemgoal').serialize();
$.ajaxSetup({async: false});
$.ajax({
type: "POST",
url: '/admin/systemgoalssystemgoalupdate?format=html',
data: formdata,
success: function (data) {
console.log(data);
},
});
Il poste bien mais je ne peux pas analyser la réponse, il se connecte à la console comme suit
{
"success": 1,
"inserted": {
"goal_id": "67",
"goalsoptions_id": "0",
"user_id": "0",
"value": "dsfdsaf",
"created": "2013-06-05 09:57:38",
"modified": null,
"due": "2013-06-17 00:00:00",
"status": "active",
"actions_total": "0",
"actions_title": "sfdgsfdgdf",
"action_type": "input",
"points_per_action": "1",
"expires": "2013-06-11 00:00:00",
"success": 1
}
}
que je crois est la réponse que je cherche.
Cependant, lorsque j'essaie de faire alert(data.success);
ou l'un des autres membres de l'objet de réponse, c'est undefined
.
Tout conseil apprécié.
appel
var parsed_data = JSON.parse(data);
devrait permettre d’accéder aux données comme vous le souhaitez.
console.log(parsed_data.success);
devrait maintenant montrer '1'
$.ajax({
type: "POST",
url: '/admin/systemgoalssystemgoalupdate?format=html',
data: formdata,
success: function (data) {
console.log(data);
},
dataType: "json"
});
Imaginez que ceci soit votre réponse Json
{"Visit":{"VisitId":8,"Description":"visit8"}}
Voici comment analyser la réponse et accéder aux valeurs
Ext.Ajax.request({
headers: {
'Content-Type': 'application/json'
},
url: 'api/fullvisit/getfullvisit/' + visitId,
method: 'GET',
dataType: 'json',
success: function (response, request) {
obj = JSON.parse(response.responseText);
alert(obj.Visit.VisitId);
}
});
Cela alertera le champ VisitId
vous devez analyser la chaîne JSON pour devenir objet
var dataObject = jQuery.parseJSON(data);
afin que vous puissiez l'appeler comme suit:
success: function (data) {
var dataObject = jQuery.parseJSON(data);
if (dataObject.success == 1) {
var insertedGoalId = dataObject.inserted.goal_id;
...
...
}
}
Puisque vous utilisez $.ajax
, et non pas $.getJSON
, votre type de retour est un texte brut. vous devez maintenant convertir data
en objet JSON.
vous pouvez le faire en modifiant votre $.ajax
en $.getJSON
(qui est un raccourci pour $.ajax
, uniquement préconfiguré pour récupérer JSON).
Ou vous pouvez analyser la chaîne data
dans JSON après l'avoir reçue, comme suit:
success: function (data) {
var obj = $.parseJSON(data);
console.log(obj);
},
Utilisez parseJSON
. Regardez le doc
var obj = $.parseJSON(data);
Quelque chose comme ça:
$.ajax({
type: "POST",
url: '/admin/systemgoalssystemgoalupdate?format=html',
data: formdata,
success: function (data) {
console.log($.parseJSON(data)); //will log Object
}
});