簡體   English   中英

如何將json對象數組發布到web api

[英]how to post json object array to a web api

如何將JSON數組發布到Web API? 它適用於單個對象。

這是我嘗試過的,但控制器似乎返回0而不是預期的3

這是我的JSON:

var sc = [{
              "ID": "5",
              "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
              "Table_ID": "Allergy_Trns",
              "Checksum": "-475090533",
              "LastModified": "2015-01-22T20:08:52.013"
          },
          {
              "ID": "5",
              "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
              "Table_ID": "Allergy_Trns",
              "Checksum": "-475090533",
              "LastModified": "2015-01-22T20:08:52.013"
          },
          {
              "ID": "5",
              "Patient_ID": "271655b8-c64d-4061-86fc-0d990935316a",
              "Table_ID": "Allergy_Trns",
              "Checksum": "-475090533",
              "LastModified": "2015-01-22T20:08:52.013"
          }];           

AJAX電話:

$.ajax({
           url: urlString,
           type: 'POST',
           data: sc,
           dataType: 'json',
           crossDomain: true,
           cache: false,
           success: function (data) { console.log(data); }
        });

Web API控制器:

[HttpPost]
public string PostProducts([FromBody]List<SyncingControl> persons)
{
    return persons.Count.ToString(); // 0, expected 3
}

在json Table_ID": "Allergy_Trns"有一個錯誤Table_ID": "Allergy_Trns"應該是"Table_ID": "Allergy_Trns"

缺少雙引號。

更新

您需要確保將參數發送為json,如下所示:

 $.ajax({
        url: urlString,
        type: 'POST',
        data: JSON.stringify(sc),
        dataType: 'json',
        contentType: 'application/json',
        crossDomain: true,
        cache: false,
        success: function (data) { console.log(data); }
    });

注意JSON.stringify(sc) ,@ ethbi在指定內容類型方面也是部分正確的。

屏幕抓取

**屏幕抓取**

您必須將內容類型標頭添加到ajax請求,以便WebAPI能夠理解請求並使用正確的格式化程序來反序列化數據:

 $.ajax({ url: urlString, type: 'POST', data: sc, dataType: 'json', contentType: "application/json", crossDomain: true, cache: false, success: function (data) { console.log(data); } }); 

您可以在beforeSend上設置Content-Type,以確保您的json數據與您的服務器對象匹配

$.ajax({
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        },
           url: urlString,
           type: 'POST',
           data: sc,
           dataType: 'json',
           contentType: "application/json",
           crossDomain: true,
           cache: false,
           success: function (data) { console.log(data); }
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM