Parsing jQuery AJAX response
Solution 1
calling
var parsed_data = JSON.parse(data);
should result in the ability to access the data like you want.
console.log(parsed_data.success);
should now show '1'
Solution 2
$.ajax({
type: "POST",
url: '/admin/systemgoalssystemgoalupdate?format=html',
data: formdata,
success: function (data) {
console.log(data);
},
dataType: "json"
});
Solution 3
Imagine that this is your Json response
{"Visit":{"VisitId":8,"Description":"visit8"}}
This is how you parse the response and access the values
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);
}
});
This will alert the VisitId field
Solution 4
you must parse JSON string to become object
var dataObject = jQuery.parseJSON(data);
so you can call it like:
success: function (data) {
var dataObject = jQuery.parseJSON(data);
if (dataObject.success == 1) {
var insertedGoalId = dataObject.inserted.goal_id;
...
...
}
}
Solution 5
Since you are using $.ajax
, and not $.getJSON
, your return type is plain text. you need to now convert data
into a JSON object.
you can either do this by changing your $.ajax
to $.getJSON
(which is a shorthand for $.ajax
, only preconfigured to fetch json).
Or you can parse the data
string into JSON after you receive it, like so:
success: function (data) {
var obj = $.parseJSON(data);
console.log(obj);
},
Related videos on Youtube
Barry Hamilton
Updated on July 09, 2022Comments
-
Barry Hamilton almost 2 years
I use the following function to post a form to 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); }, });
It posts fine but I cannot parse the respons, it logs to console as follows
{ "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 } }
which I believe is the response I am looking for.
However when I try to do
alert(data.success);
or any of the other members of the response object it isundefined
.Any advice appreciated.
-
zerkms about 11 years
dataType: 'json'
. Did you put?format=html
parameter intentionally? What does it mean? -
Chris S. about 11 yearsIf your AJAX Url returns a content header referring to JSON, you don't even need to $.parseJSON(yourdata), as jQuery would automatically do so by default. I do that, and in every response I also have a custom status code. This way you can easily verify if happened what you expected.
-
-
zerkms about 11 yearsIt makes sense to fix the roots of the issue, not its consequences
-
Maxim Kumpan almost 7 yearsDon't parse json after it has been received. Indicate
dataType: 'json'
in your original request and you will get json, not text.