获取ajax传过来的数据_大数据编辑问题
【摘要】最近項目用到了大數據的編輯問題,在此做一個簡單的總結
【作者】田鋆鵬
在最近的項目中遇到一個問題,這個問題的起因是因為在調用接口傳參是傳入的數據太大,導致接口調用失敗
【重構建議:田甜】
1.我們在重構VUE項目的時候, POST請求并沒有發成功,而GET請求卻能獲取到數據,這個問題解決后,可以列在其中
2. POST和GET的基礎原理,甚至是HTTP協議的基本原理,也可以在這里做一些引申
一、出現問題的原因
剛開始以為是因為數據庫長度的問題, 因為用到了數據庫的擴展字段, 而數據庫擴展字段的默認數據類型是 varchar, 默認長度是 一般為 128, 當出現問題的時候將改字段的數據類型改為了 text, 默認長度為最大, 但是在調用接口的時候還是報錯了, 說明改字段的長度還是不夠, 但是數據庫這邊已經是不能再修改了, 后邊就只能通過后端修改接口來解決問題
二、 解決方法
首先是后端修改結構, 提供一個新的接口, 將參數封裝成 json 字符串傳到后端
然后是前端在調用接口時要對參數進行調整
因為我們現在的通用的參數傳遞方式如下:
因為后端接口的結構做了一些調整, 所以需要將參數傳遞修改為以下格式
具體的參數修改格式方法如下:
1. 先將拿到的數據放到一個對象中
2. 然后將改對象轉成json字符串
3. 在調用接口傳參時將 header 的contentType修改為appcalition/json;charset=utf-8'
4. 最后在進行 ajax 請求時候再對數據進行一次處理
這樣就可以將頁面拿到的對象格式的數據轉換成請求接口時所需要的 json 格式的數據,這樣就可以完成大數據的編輯了
1028更新ing
本次更新主要是在后續的使用過程中又出現了一個比較嚴重的問題, 問題出現的原因以及解決方案如下:
之前說過大數據編輯的問題, 在調整完畢后又出現了一個問題, 就是在傳參數的時候, 如果參數中有 ? 的話, 會出現一些問題
出現原因
因為在處理參數的時候是通過 ? 來分割進行處理的, 所以在傳入的參數有 ? 時, 直接就從 ? 處截取了, 到后邊就拿不到接口名稱了
首先調用接口時傳入的參數如下圖所示:
然后在調用接口時拿到的參數如下圖所示:
我們可以看到這里邊有兩個 ?, 所以截取的時候就截取成了一個數組中有 3個 元素
正常情況下, 我們在根據 ? 截取后可以在數組的第二個元素中拿到 invoke_method
但是因為這里在傳值的時候傳入了兩個甚至多個 ?, 所以, 我們在數組的第二個元素中就拿不到的這個invoke_method了
所以在控制臺中就有了報錯信息
解決方案
我這邊的解決方案就是在拿到傳過來的 url 后, 會先進行一個判斷:
如果 url.split('?')[1].split('}]')[1] == undefined 成立的話, 就說明傳遞過來的字符串中有 兩個或者多個 ? , 這時候就手動把所需要的 invoke_method 給拼接到后邊
如果 url.split('?')[1].split('}]')[1] == undefined 不成立, 就說明傳遞過來的字符串就只有一個 ?, 也就是正常的數據, 這時候就不要進行手動拼接, 可以通過 ? 的分割進行拼接
具體的代碼如下:
這樣在調用接口時不管傳遞的參數中有幾個? , 都是可以正常進行接口調用的
歡迎關注 技術團隊的知乎賬號 我們憑團隊實例運作以下專欄, 必須干貨!
互聯網創業專欄 (我們小伙伴的創業歷程)
與您一起聊技術 (APP、微信公眾號、小程序、H5 技術總結)
互聯網產品研發管理 (我們公司對產品結構的管理思路)
產品君的案例庫(產品小伙伴深刻總結)
總結
以上是生活随笔為你收集整理的获取ajax传过来的数据_大数据编辑问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java安卓浏览器下载文件,JAVA实现
- 下一篇: iphone查看删除的短信_苹果删除的短