这是将该数组发布到GetBulk方法的JSON代码:
$("#button").click(function () {
var array = [
{
StudentRecordId: 1,
Name: "Amit",
Marks: 11,
Grade: "A"
},
{
StudentRecordId: 2,
Name: "Abhishek",
Marks: 12,
Grade: "A"
},
{
StudentRecordId: 3,
Name: "Vipin",
Marks: 13,
Grade: "A"
}
]
$.ajax({
type: "Post",
url: "/Home/GetBulk",
dataType: "json",
traditional:true,
data: JSON.stringify({ data: array }),
traditional: true,//"feedGraphId=10696",
success: function (result) {
alert("j= " + result.studentRecord);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("error" + errorThrown);
}
});
});
这是我的控制器的方法:
//to recieve array from json and post values to student record table
public JsonResult GetBulk(List<StudentRecord> models)
{
StudentRecord studentRecords = new StudentRecord();
foreach(var item in models)
{
studentRecords.Name = item.Name;
studentRecords.Marks = item.Marks;
studentRecords.Grade = item.Grade;
db.StudentRecords.Add(studentRecords);
db.SaveChanges();
}
var c = db.StudentRecords.ToList();
return Json(models, JsonRequestBehavior.AllowGet);
}
这是我的模特:
public class StudentRecord
{
public long StudentRecordId { get; set; }
public string Name { get; set; }
public int Marks { get; set; }
public string Grade { get; set; }
}
那么如何使用这个json数组将我的值提交给表?
答案 0 :(得分:4)
您忘记设置AJAX请求的contentType
并且还发送了错误的JSON有效内容(您的服务器需要一个数组,但您将其作为对象发送:{"data":[...]}
):
$.ajax({
type: 'POST',
url: '/Home/GetBulk',
contentType: 'application/json',
data: JSON.stringify(array),
success: function (result) {
alert("j= " + result.studentRecord);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("error" + errorThrown);
}
});
我在代码中注意到的其他事项:
dataType: 'json'
- &gt;如果服务器设置了正确的Content-Type响应头(如果你返回一个Json结果,它将会是这样),这是不必要的。在这种情况下,jQuery将使用此响应头来了解如何处理响应数据traditional: true
参数 - &gt;当你发送一个你在这里做的JSON请求时它没用了JSON.stringify({ data: array })
替换为JSON.stringify(array)
,因为第一个数据将像这样发送:{ "data": [...] }
而您的服务器需要List<StudentRecord>
,因此有效负载应如下所示: [...]