簡體   English   中英

使用 AJAX () 將 Javascript 中的數組對象數據發送到 ASP.NET Core 控制器

[英]Sending Array Object Data in Javascript to ASP.NET Core Controller using AJAX ()

我已經嘗試了與該問題有關的所有其他解決方案,但仍然找不到我的代碼缺少的內容。 這是我的 AJAX() 代碼。

var group = JSON.stringify({ 'listofusers': listofusers });

console.log("listofusers : " + JSON.stringify({ 'listofusers': group }));
(Assuming I have my listofusers object ready, and yes i've checked the console and it has data inside.)


$.ajax({
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        type: "POST",
        url: url,

        data: group,
        success: function (data) {
            console.log("output : " + JSON.stringify(data));
            //doSend(JSON.stringify(data));
            //writeToScreen(JSON.stringify(data));
        },
        error: function (data) {
            console.log("error : " + JSON.stringify(data));
        },
    });

這是我的服務器端控制器。

[HttpPost]
public IActionResult GetMesssage(List<UserModel> listofusers)
{
var g = listofusers;
}

只是從控制器中進行簡單的獲取,因此我可以驗證來自客戶端的數據是否確實已發送。

我已經嘗試了 [FromBody] 屬性,但仍然沒有從服務器端獲取數據的運氣。

這是一個如下所示的工作演示:

1.型號:

public class UserModel
{
    public int Id { get; set; }
    public string Name { get; set; }
}

2.查看(刪除Content-type ):

<script>
    var listofusers = [
            { id: 1, name: 'aaa' },
            { id: 2, name: 'bbb' },
            { id: 3, name: 'ccc' }
        ];
    var group = { 'listofusers': listofusers };
    console.log(group);
    $.ajax({
        dataType: 'json',
        type: "POST",
        url: "/home/GetMesssage",
        data: group,
        success: function (data) {
            console.log("output : " + JSON.stringify(data));
        },
        error: function (data) {
            console.log("error : " + JSON.stringify(data));
        },
    });
</script>

3. Console.log(group) :

在此處輸入圖片說明

4.結果: 在此處輸入圖片說明

更新:

使用 json 的另一種方法:

1.View(將組從JSON.stringify({ 'listofusers': listofusers });更改為JSON.stringify(listofusers); ):

<script>
    var listofusers = [
            { id: 1, name: 'aaa' },
            { id: 2, name: 'bbb' },
            { id: 3, name: 'ccc' }
    ];
    var group = JSON.stringify(listofusers);
    console.log(group);
    $.ajax({
        contentType:"application/json",
        dataType: 'json',
        type: "POST",
        url: "/home/GetMesssage",

        data: group,
        success: function (data) {
            console.log("output : " + JSON.stringify(data));
        },
        error: function (data) {
            console.log("error : " + JSON.stringify(data));
        },
    });
</script>

FromBody (添加FromBody ):

[HttpPost]
public IActionResult GetMesssage([FromBody]List<UserModel> listofusers)
{
     //...
}

你可以試試這個。

首先將要傳遞的參數字符串化:

$.ajax({
        url: url,
        type: "POST",
        data: {
            listofusers: JSON.stringify(listofusers),
        },
        success: function (data) {
        },
        error: function (error) {
        }
    });

然后在您的控制器中:

[HttpPost]
public IActionResult GetMesssage(string listofusers)
{
   var jsonModel = new JavaScriptSerializer().Deserialize<object>(listofusers); //replace this with your deserialization code
}

我們在這里做的是將您的對象作為字符串傳遞,然后在控制器端接收后反序列化它。

希望這可以幫助。

我找到了解決問題的方法,但我只想澄清一下,也許有解決方法或其他解決方案。

我研究了“JSON.stringify();”傳遞的數據來自 AJAX() 並且有點像這樣。

"[[{\\"ID\\":0,\\"UserID\\":1014,\\"Level\\":\\"support\\",\\"Department\\":\\"\\",\\"Facility\\":\\"Talisay District Hospital\\",\\"Firstname\\":\\"Joseph\\",\\"Middlename\\":\\"John\\",\\"Lastname\\":\\"Jude\\",\\"LoginStatus\\":false,\\"IPAddress\\":\\"192.168.110.47:12347\\"},{\\"ID\\":0,\\"UserID\\":1014,\\"Level\\":\\"support\\",\\"Department\\":\\"\\",\\"Facility\\":\\"Talisay District Hospital\\",\\"Firstname\\":\\"Joseph\\",\\"Middlename\\":\\"John\\",\\"Lastname\\":\\"Jude\\",\\"LoginStatus\\":false,\\"IPAddress\\":\\"192.168.110.47:15870\\"}]]"

我想知道 JSON 格式是否是從控制器端解析數據的一個因素。 (這當然是愚蠢的,因為只有一種 JSON 格式。(或者也許還有另一種,如果有的話,請您發布一些來源以供參考。))

所以我嘗試在我的模型中使用“JsonConvert.Serialize()”方法序列化一個虛擬數據,輸出的 JSON 數據是這樣的。

[{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:12347"},{"ID":0,"UserID":1014,"Level":"support","Department":"","Facility":"Talisay District Hospital","Firstname":"Joseph","Middlename":"John","Lastname":"Jude","LoginStatus":false,"IPAddress":"192.168.110.47:16709"}]

我嘗試通過 AJAX() 將來自 JsonConvert.Serialize() 方法的輸出 JSON 數據發送到控制器,並且成功了! 我現在感到很欣慰,因為這個問題已經很令人沮喪了。

如果我發現的內容有問題,請回復可能是錯誤或正確的內容。 謝謝!

暫無
暫無

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

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