簡體   English   中英

在ajax post問題中傳遞數據

[英]Passing data in ajax post issue

場景:

需要將包含子對象列表的對象傳遞給控制器​​。

問題 :

我能夠獲取對象的值,但不能獲取對象內的子對象列表的值。

代碼:

index.cshtml

function sendData() {
    var student = {
        Id: 1,
        Name: "xxx",
        Marks: [{
            Subject: "Maths",
            Mark:80
        },
        {
            Subject: "Science",
            Mark: 75
        }]
    }
    $.ajax({
        url: '@Url.Action("Receive", "Home")',
        data: student,
        success: function (data) {
            alert("done");
        },
        error: function (error) {
            alert('error For details refer console log');
            console.log(error);
        }
    });
}

HomeController.cs

public ActionResult Receive(Student student)
    {
        ViewBag.Message = "Your contact page.";
        return View();
    }

Student.cs

public class Student
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<Marks> Marks { get; set; }
}
public class Marks
{
    public string Subject { get; set; }
    public decimal Mark { get; set; }
}

截圖:

Chrome調試器顯示已設置的所有數據。

在此輸入圖像描述

但在控制器中,我沒有得到馬克斯的價值

在此輸入圖像描述

任何幫助,將不勝感激。 謝謝。

您需要對數據進行字符串化,並設置contentTypetype ajax選項(請注意,它必須是POST,否則您需要使用帶有點表示法的完全限定屬性名稱以不同方式生成數據 - 例如{ Id: 1, .... , 'Marks[0].Subject': 'Maths', 'Marks[0].Mark': 80, ... } ,在這種情況下,你現有的ajax代碼無需修改即可工作)

var student = {
    ....
};

$.ajax({
    url: '@Url.Action("Receive", "Home")',
    data: JSON.stringify({ student: student }, // stringify
    type: 'POST', // add
    contentType: "application/json; charset=utf-8", //add
    success: function (data) {
        alert("done");
    },
    ....
});

請注意,您的方法返回一個視圖,但您沒有對該視圖執行任何操作。 如果您的目的是使用該視圖更新DOM,那么該方法應該return PartialView( ... ); 並在ajax成功回調中,

success: function (data) {
    $(someElement).html(data);
},

暫無
暫無

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

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