2012-02-21 3 views
0

У меня странные проблемы с одним из моих АЯКС представлены формы ... У меня есть файл-загрузки в форме и каким-то образом действительный JSON объектов с сервера теперь строка ...jsonObject - это строка - как преобразовать в json?

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"} 

Таким образом, без файла -upload и enctype:multipart в форме console.log(jsonObject) возвращает >Object с атрибутом «успех» и «данные». При загрузке файла в форме как-то jsonObject представляет собой строку, как вы можете видеть выше.

Любые идеи, что может вызвать это? Или как я могу преобразовать строку обратно в действительный объект JSON?

Заранее спасибо.

+0

JSON существует только в JavaScript как string ... так что ваш запрос немного запутан. Предполагаю, что вам нужен объект * JavaScript *. –

+0

Да, вы правы, точно не знали разницы. Мне нужен jsObject - правильно! – matt

ответ

3

Как я могу преобразовать строку обратно в действительный объект [..]?

jsonObject = JSON.parse(jsonObject); 
+0

Это не приводит к объекту JSON (независимо от того, что есть), но в объекте JavaScript. –

+1

Я на 100% уверен, что он имел в виду. –

+0

Да, мне тоже, но нужно уточнить и объяснить, что JSON - это не JavaScript. –

6

Вы запускаете его через JSON.parse, при использовании json2.js обеспечить этот метод для старых браузеров.

var js_object = JSON.parse(json_string); 

(И это даст вам объект JavaScript, так как is no such thing as a JSON object).

Если вы уже используете jQuery, то у него есть свой собственный метод абстракции - jQuery.parseJSON - который вы можете использовать вместо json2.js. Это слишком большая библиотека для загрузки только для этой функции.

0

Вы можете использовать JSON.parse, который будет работать только в новой версии браузера (не будет работать в IE7-), или вы можете использовать $ jQuery.parseJSON

http://api.jquery.com/jQuery.parseJSON/

Смежные вопросы