在bsrck项目中,使用jQuery.Form.js的ajaxSubmit时,遇到有文件上传的form提交,在firefox和chrome浏览器中测试,报Bad Request的错误,经查代码后发现是需要对form添加ENCTYPE="multipart/form-data"属性,在IE浏览器下正常,按正常使用规则是需要添加此属性。具体原因需要抓取字节流,确认技术细节;
在寻找技术方案的时候,发现了此JSON.stringif方法,查些资料在此以做记录;
作用: 将JavaScript 值转换为 JavaScript 对象表示法 (Json) 字符串。
使用格式:JSON.stringify(value [, replacer] [, space])
参数:
value
必需。 要转换的 JavaScript 值(通常为对象或数组)。
replacer
可选。 转换结果的函数或数组。
replacer is a function, JSON.stringify calls the function, passing in the key and value of each member.‘ data-guid="dc82da6b06dbddbd82092ab1f2e96424">如果 replacer 为一个函数,则 JSON.stringify 会调用该函数,并传入每个成员的键和值。
使用返回值而不是原始值。 undefined, the member is excluded.‘ data-guid="3f6ed2faae8077328981aabbfd99c141">如果此函数返回 undefined,则排除成员。 根对象的键是一个空字符串:""。replacer is an array, only members with key values in the array will be converted.‘ data-guid="b9f4f538b46fad2071af80be0070ff6d">如果 replacer 为一个数组,则仅转换该数组中具有键值的成员。 成员的转换顺序与键在数组中的顺序一样。 replacer array is ignored when the value argument is also an array.‘ data-guid="c4e42b49d6d7eb459295736dd5e1885f">当 value 参数也为数组时,将忽略 replacer 数组。
space
可选。 向返回值 JSON 文本添加缩进、空白和换行符以使其更易于读取。
space is omitted, the return-value text is generated without any extra white space. ‘ data-guid="48c9c3e436879d11ea32ccf4f5259ad9">如果省略 space,则将生成返回值文本,而没有任何额外空白。
space is a number, the return-value text is indented with the specified number of white spaces at each level.‘ data-guid="c57c9137e9716e824e8c1cd9efa7490d">如果 space 为一个数字,则返回值文本在每个级别缩进指定数目的空格。 space is greater than 10, text is indented 10 spaces.‘ data-guid="62860c6d5566f29380fa51408eff10ed">如果 space 大于 10,则文本缩进 10 个空格。
如果 space 是非空字符串(例如“\t”),则返回值文本在每个级别中缩进字符串中的字符数。
space is a string that is longer than 10 characters, the first 10 characters are used.‘ data-guid="2dcc16da441fd0521dee86520826e1d8">如果 space 是长度大于 10 个字符的字符串,则使用前 10 个字符。
返回值:
一个包含 JSON 文本的字符串。
备注:
value has a toJSON method, the JSON.stringify function uses the return value of that method.‘ data-guid="36e9d1ed3cab9485274e31ecf79530e7">如果 value 具有 toJSON 方法,则 JSON.stringify 函数使用该方法的返回值。 toJSON method is undefined, the member is not converted.‘ data-guid="7df2e474c28782ca00fa0bc4f8e8a8f4">如果 toJSON 方法的返回值为 undefined,则不转换成员。 这使对象能够确定其自己的 JSON 表示形式。
undefined, will not be converted.‘ data-guid="e63e958a21e37b823e0ee7747f0c6282">将不会转换不具有 JSON 表示形式的值,例如 undefined。 在对象中,将丢弃这些值。 在数组中,会将这些值替换为 null。
字符串值以引号开始和结束。 所有 Unicode 字符可括在引号中,除了必须使用反斜杠进行转义的字符。 以下字符的前面必须是反斜杠:
-
引号 (")
-
反斜杠 (\)
-
Backspace (b)
-
换页 (f)
-
换行符 (n)
-
回车 (r)
-
水平制表符 (t)
-
四个十六进制数字 (uhhhh)
执行顺序
toJSON method exists for the value argument, JSON.stringify first calls the toJSON method.‘ data-guid="7f5dacc0cc5c7fede49822f7d710afc7">在序列化过程中,如果 value 参数具有 toJSON 方法,则 JSON.stringify 会首先调用 toJSON 方法。 如果该方法不存在,则使用原始值。 replacer argument is provided, the value (original value or toJSON return-value) is replaced with the return-value of the replacer argument.‘ data-guid="8cf5b4f667905fca26e310d23677eec9">紧接着,如果提供 replacer 参数,则该值(原始值或 toJSON 返回值)将替换为 replacer 参数的返回值。 space argument to generate the final JSON text.‘ data-guid="58fa4a5642c18dd7a1a7244d8b3e5dd2">最后,根据可选的 space 参数向该值添加空白以生成最终的 JSON 文本。
另附参考资料:
http://www.cnblogs.com/damonlan/archive/2012/03/13/2394787.html
JSON.stringify 函数 (JavaScript)
原文:http://www.cnblogs.com/bingya/p/3517775.html