iT邦幫忙

2

【已解決】前端 ajax 發送請求 空資料被自動移除,如何讓他不用移除

  • 分享至 

  • xImage

先說結論:後端處理空資料 略過或拋錯
(〒︿〒) 浪費了半天


在ajax發送的時候 看F12 PayLoad 找不到空object的"valueA"
後端是收multipart/form-data
我是發送ajax預設格式application/x-www-form-urlencoded
感覺是自動移除無效數值,如何讓他發送空object出去?

var data={
    "valueA":{},/*資料內的Object是空 也試過new Object()*/
    "valueB":{26:{name:"qwe"},27:{name:"asd"}}
}

$.ajax({
    url:apiUrl,
    type:'post',
    crossDomain: true,
    headers: {
        "Accept":"application/json",
        "Authorization":'Bearer '+bearToken
    },
    data:data,
})

payLoad看見我帶過去的值:

valueB[26][name]: qwe
valueB[27][name]: asd
/*valueA 不見了*/
/*希望出現 valueA: (空值)*/

我覺得這是前端應該可以處理的,所以想問問前輩大大們

已經嘗試:
headers 增加

  1. 拒絕自動打包
processData: false,
server 500顯示格式錯誤
  1. 轉成json溝通
data: JSON.stringify(data),
contentType: "application/json"

或是只有body轉成字串 讓後端轉型態

data: JSON.stringify(data)

server 500顯示.json()錯誤

  1. 強制給予空或空值
data['value1']={} /*不能正確被打包*/
data['value1']= '' ,'[]','{}',[],null 
/*, 是多次測試*/

server 500顯示.json()錯誤

淺水員 iT邦大師 6 級 ‧ 2023-09-14 00:59:50 檢舉
你目前發送的是
valueB[26][name]=qwe&valueB[27][name]=asd
所以你希望加上valueA的請求參數長怎樣?
rian1995 iT邦新手 5 級 ‧ 2023-09-14 08:36:39 檢舉
希望是可以出現這個參數出現且為空值
valueA:
valueB[26][name]: qwe
valueB[27][name]: asd
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
淺水員
iT邦大師 6 級 ‧ 2023-09-14 13:31:23

payload 要看原始資料比較準確
https://ithelp.ithome.com.tw/upload/images/20230914/20112943wtGJa39nFV.png

這才是真正傳遞的內容

所以如果傳遞的是

valueA=&valueB%5B26%5D%5Bname%5D=qwe&valueB%5B27%5D%5Bname%5D=asd

chorme 會顯示成

valueA:
valueB[26][name]: qwe
valueB[27][name]: asd

但 firefox 會顯示成

valueA: ""
valueB[26][name]: "qwe"
valueB[27][name]: "asd"

所以用原始的資料會比較容易溝通
要達到上面的效果你可以把 valueA 設定成空字串

我要發表回答

立即登入回答