問題描述 後端使用如下方式接收前端傳入參數: 由於使用了 @RequestBody 註解,所以,前端需要傳遞 JSON 數據。那麼,如何將表單數據快速轉換為 JSON 字元串呢? 定義如下通用方法: 以上方法會返回一個 Object,然後再通過 JSON.stringify(obj) 將 JSON ...
問題描述
後端使用如下方式接收前端傳入參數:
1 @PostMapping(value = "/test", produces = MediaType.APPLICATION_JSON_UTF8_VALUE) 2@ResponseBody 3 public Map<String, Object> test(@RequestBody Map<String, Object> map) { 4 System.out.println(map); 5 return map; 6 }
由於使用了 @RequestBody 註解,所以,前端需要傳遞 JSON 數據。那麼,如何將表單數據快速轉換為 JSON 字元串呢?
定義如下通用方法:
1 function serializeForm(form){ 2 var obj = {}; 3 $.each(form.serializeArray(),function(index){ 4 if(obj[this['name']]){ 5 obj[this['name']] = obj[this['name']] + ','+this['value']; 6 } else { 7 obj[this['name']] =this['value']; 8 } 9 }); 10 return obj; 11 }
以上方法會返回一個 Object,然後再通過 JSON.stringify(obj) 將 JSON 對象轉換為 JSON 字元串即可。
調用 serializeForm() 方法只需要傳入 表單對象即可,如: serializeForm($('form'));
<form action="" method="POST" id="myForm"> userName: <input type="text" name="userName" /><br /> password: <input type="password" name="password" /><br /> <input type="button" value="Submit" id="btn" /> </form> <script> $(function() { $('#btn').click(function () { var jsonObj = serializeForm($("form")); var jsonStr = JSON.stringify(jsonObj); $.ajax({ type: 'POST', url: 'http://localhost:8083/test', data: jsonStr, headers: { 'Content-Type': 'application/json;charset=UTF-8' }, success: function (data) { alert("success: " + data); }, error: function (data) { alert("error: " + data); } }); return false; }); }); function serializeForm(form){ var obj = {}; $.each(form.serializeArray(),function(index){ if(obj[this['name']]){ obj[this['name']] = obj[this['name']] + ','+this['value']; } else { obj[this['name']] =this['value']; } }); return obj; } </script>