今天遇見一個ajax請求的問題,以前data直接傳了一個json字符串,后來適應新需求將ajax的請求參數修改為對象的格式讓ajax自動轉換為json字符串。以下是兩種ajax請求代碼。
//字符串格式 $.ajax({ url:"http://127.0.0.1/test", type:"post", dataType:"JSON", data:"{'param':'test'}", processData :false, }); //對象格式 $.ajax({ url:"http://127.0.0.1/test", type:"post", dataType:"JSON", data:{ param:'test' }, processData :false, });
之前字符串格式的方式功能是能調通的,但是改成對象方式功能就調不通了,后台斷點發現獲取不到param參數。通過Chrome調試發現這個ajax請求的FormData是一個"[Object object]"字符串,並不是預期的json字符串。其他使用對象方式也沒有出過問題,后來搜索了下ajax請求參數的含義,發現是因為processData這個配置的原因,processData的作用是:指定ajax是否將data中的數據進行轉化,默認是true,即默認會將data中的數據轉化成json字符串,false時,直接將data傳輸到后台。
之前的ajax請求不是我寫的,所有不懂processData的含義,去掉processData或者修改為true,就可以轉化了。