I have a weird problem with one of my ajax submitted forms … I have a file-upload in the form and somehow a valid JSON Object from the server is now a String …
if (typeof jsonObject == 'string')
console.log('yes, it's a string'); //yes, it's a string
console.log(jsonObject); // { "status":"success", "data":"Updated profile successfully"}
So, without the file-upload and the enctype:multipart
in the form console.log(jsonObject)
is returning >Object
with a "success" and "data" attribute. With the file-upload in the form somehow the jsonObject is a string like you can see above.
Any ideas what could cause that? Or how can I convert the string back to a valid JSON object?
Thank you in advance.
I have a weird problem with one of my ajax submitted forms … I have a file-upload in the form and somehow a valid JSON Object from the server is now a String …
if (typeof jsonObject == 'string')
console.log('yes, it's a string'); //yes, it's a string
console.log(jsonObject); // { "status":"success", "data":"Updated profile successfully"}
So, without the file-upload and the enctype:multipart
in the form console.log(jsonObject)
is returning >Object
with a "success" and "data" attribute. With the file-upload in the form somehow the jsonObject is a string like you can see above.
Any ideas what could cause that? Or how can I convert the string back to a valid JSON object?
Thank you in advance.
Share Improve this question edited Feb 21, 2012 at 10:23 Felix Kling 817k181 gold badges1.1k silver badges1.2k bronze badges asked Feb 21, 2012 at 10:23 mattmatt 44.4k107 gold badges268 silver badges402 bronze badges 2- JSON only exists in JavaScript as a string... so your request is a bit confusing. I assume you want a JavaScript object. – Felix Kling Commented Feb 21, 2012 at 10:24
- Yes, you're right, didn't exactly know the difference. I need a jsObject - correct! – matt Commented Feb 21, 2012 at 10:42
3 Answers
Reset to default 6You run it through JSON.parse
, while using json2.js to provide that method for older browsers.
var js_object = JSON.parse(json_string);
(And that will give you a JavaScript object, since there is no such thing as a JSON object).
If you are already using jQuery, then it has its own abstraction method — jQuery.parseJSON
— that you can use instead of json2.js. It is an excessively large library to load just for that feature though.
how can I convert the string back to a valid [..] object?
jsonObject = JSON.parse(jsonObject);
You can use JSON.parse which will only work in new version of browser(will not work in IE7-) or you can use $jQuery.parseJSON
http://api.jquery./jQuery.parseJSON/