日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

$axios.post 表单序列化 URLSearchParams

發布時間:2024/3/26 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 $axios.post 表单序列化 URLSearchParams 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

URLSearchParams的用法

這個方法可以將get/post要傳的參數序列化,再通過this.$axios.post(‘api/address’, params)發送請求。
具體的用法如下:

// POST const params = new URLSearchParams(); params.append('name', this.name); params.append('password', this.password); this.$axios.post('api/address', params).then(result => {// success }, error => {// fail }).catch(error => {});// GET const params = new URLSearchParams(str); this.$axios.get('api/address', params).then(result => {// success }, error => {// fail }).catch(error => {});

這里是正常顯示,當然URLSearchParams是有兼容行的,具體可以查看這個網站: https://caniuse.com/

看到get方法可以將參數放在new里,于是我也這么寫:

// POSTconst params = new URLSearchParams({name: this.name, password, this.password});this.$axios.post('api/address', params).then(result => {// success}, error => {// fail}).catch(error => {});

發現低版本的瀏覽器發送的是空的params,兼容行不好。

最后,奉上封裝好的序列化方法,因為URLSearchParams有兼容性,所以就暫時不被考慮了,手寫(大牛的)一個比較靠譜。

function getType(obj) {return Object.prototype.toString.call(obj).replace(/^\[\w+ (\w+)\]$/, '$1').toLowerCase(); } // scope暫時用不上,后面優化 function convert(params, obj, scope) {let type;let array = Array.isArray(obj);let hash = getType(obj) === 'object';Object.keys(obj).forEach(function(key) {let value = obj[key];type = getType(value);if (scope) { key =scope +'[' +(hash || type === 'object' || type === 'array' ? key : '') +']'; }// handle data in serializeArray() formatif (!scope && array) { params.add(value.name, value.value) }// recurse into nested objectselse if (type === 'array' || type === 'object') { serialize(params, value, key) }else { params.add(key, value) }}); } export function serialize(obj) {let params = [];params.add = function(key, value) {if (value == null) value = '';this.push(escape(key) + '=' + escape(value));};convert(params, obj);return params.join('&').replace(/%20/g, '+'); };

要優化點:1、可以序列化merge 2、scope參數

總結

以上是生活随笔為你收集整理的$axios.post 表单序列化 URLSearchParams的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。