我正在嘗試呼叫 AJAX 函式來傳輸一些JSON data(大約 38Kb 大小),這些函式將被投射到其他處理器中的 aList<ModelClass>中Controller Action。
(簡化)_oRecords AJAX 傳輸前的資料格式-console.log(JSON.stringify(_oRecords));
[{{"sn":2208,"timeStampMarker":"","Id":0,"Data1":1,"Data2":2,"Data3":3},{"sn":2209,"timeStampMarker":"","Id":0,"Data1":1,"Data2":2,"Data3":3},{"sn":2210,"timeStampMarker":"","Id":0,"Data1":1,"Data2":2,"Data3":3},}]
(簡化)控制器動作上的資料格式- F12 網路負載
records=[{"sn%22:2208,"timeStampMarker%22:%22%22,"Id%22:0,"Data1%22:1,-ata2%22:2,"Data3%22:3},{%22 sn%22:2159,"timeStampMarker%22:%22%22,"Id%22:0,"Data1%22:1,-ata2%22:2,"Data3%22:3},{%22 sn%22:2159,"timeStampMarker%22:%22%22,"Id%22:0,"Data1%22:1,-ata2%22:2,"Data3%22:3},{%22
本質上,特殊字符如被AJAX 呼叫'[', '{', ','的選項錯誤編碼。contentType在這篇文章之后,在配置 AJAX 呼叫后收到上述結果,如下所示:
Ajax 呼叫配置 - 查看
$.ajax({
url: '../CSV/SaveDataFoo/',
type: "POST",
cache: false,
contentType: "application/json; charset=utf-8",
data: { records: JSON.stringify(_oRecords) },
dataType: "json"
});
控制器
public JsonResult SaveDataFoo(List<DataModelClass> records)
{
//Does some things with `records` List<T>
return Json(null);
}
由于傳輸不正確,records的 Count 為 [0](如預期的那樣)。是否有任何其他 AJAX 配置或者_oRecords我可以做進一步的操作來解決這個問題?提前致謝!
uj5u.com熱心網友回復:
這里有兩件事...
要使用 jQuery 發送 JSON 請求正文,請不要將資料嵌套在物件中。jQuery 會將其視為
application/x-www-form-urlencoded$.ajax({ url: "../CSV/SaveDataFoo/", method: "POST", contentType: "application/json", processData: false, data: JSON.stringify(_oRecords), dataType: "json" });要告訴您的控制器操作從回應正文中決議資料,請使用
[FromBody]屬性public JsonResult SaveDataFoo([FromBody] List<DataModelClass> records)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/454961.html
