JSON

ajax、json一些整理(2)(3)

字号+ 作者:H5之家 来源:H5之家 2017-07-15 17:01 我要评论( )

看js代码:逐步的构造出一个json格式。 $("#btn").click(function () {var jsondata = { TB: {}, TA: [] };jsondata.TB.b1 = "b1";jsondata.TB.ITCC = {};jsondata.TB.ITCC.c1 = new Array(1, 2, 3, 4);var ta1 = {

看js代码:逐步的构造出一个json格式。

$("#btn").click(function () { var jsondata = { TB: {}, TA: [] }; jsondata.TB.b1 = "b1"; jsondata.TB.ITCC = {}; jsondata.TB.ITCC.c1 = new Array(1, 2, 3, 4); var ta1 = {}; ta1.a1 = "a1"; ta1.a2 = new Array("a", "b", "x", "y"); var ta2 = {}; ta2.a1 = "a2"; ta2.a2 = new Array("a2", "b2", "x2"); jsondata.TA.push(ta1); jsondata.TA.push(ta2); var option = { url: '/test/Fortest', type: 'POST', data: JSON.stringify(jsondata), dataType: 'html', contentType: 'application/json', success: function (result) { alert(result); } }; $.ajax(option); });

  

最终,发送出去的json字符串如下:
{"TB":{"b1":"b1","ITCC":{"c1":[1,2,3,4]}},"TA":[{"a1":"a1","a2":["a","b","x","y"]},{"a1":"a2","a2":["a2","b2","x2"]}]}
Controller接收到这个json串后,就能自动的匹配参数了。具体得到的参数如下截图:

clipboard[6]

clipboard[7]

总结:

1.不指定contentType的话,默认都是application/x-www-form-urlencoded方式发送。此时即便发送的是json格式的数据,默认情况下,jquery的ajax也会把他转为查询字符串的形式(可以通过修改ajax参数修改),以FormData的形式发送出去。
2.不指定contentType的时候,如果controller中的方法签名比较简单,那么即便是FormData形式的数据也能由MVC的命名匹配规则获取到数据。
3.指定contentType为'application/json'时候,发送的数据必须是符合json规范的字符串。通常,使用 JSON.stringify(jsondata)有较好的可读性,可以获得一个json字符串。当然,不是必须的。使用拼接的字符串,只要是符合json规范的,也是可以发送的。
4.如果contentType为'application/json'时,发送的data不是符合json规范的字符串,则会出错。
5.通常情况下,尽量指定contentType为'application/json',并且发送json字符串作为发送数据,这样可读性更好,并且对于复杂的函数签名,也能起到很好的匹配。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 用Python将excel文件导出成json

    用Python将excel文件导出成json

    2017-07-16 12:00

  • JSON解析器--实现代码

    JSON解析器--实现代码

    2017-07-15 16:00

  • JSON学习---合并Merge,克隆Clone,指向子对象ForcePath

    JSON学习---合并Merge,克隆Clone,指向子对象ForcePath

    2017-07-15 15:01

  • JSON学习笔记(四)

    JSON学习笔记(四)

    2017-07-15 15:00

网友点评