我的一个ajax提交的表单有一个奇怪的问题...我在表单中有一个文件上传,不知何故来自服务器的有效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"}
因此,如果没有文件上传,enctype:multipart
形式的console.log(jsonObject)
将返回>Object
,其中包含“成功”和“数据”属性。以某种方式在表单中上传文件,jsonObject就像你在上面看到的一样。
任何可能导致这种情况的想法?或者我如何将字符串转换回有效的JSON对象?
提前谢谢。
答案 0 :(得分: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。这是一个过大的库,只为该功能加载。
答案 1 :(得分:3)
如何将字符串转换回有效的[..]对象?
jsonObject = JSON.parse(jsonObject);
答案 2 :(得分:0)
您可以使用JSON.parse,它只适用于新版本的浏览器(在IE7中不起作用)或者您可以使用$ jQuery.parseJSON