Asp.net Ajax Post对象始终为空
我有一个表单,里面有几个控件。当用户选择一个状态时,我正在向服务器发送帖子,以获取学校列表。发布后,我丢失了表单中键入的值。我决定获取这些值并将它们保存在会话变量中。我现在遇到的问题是,我的函数有6个以上的参数。我想把它减少到最多3个。我正在序列化表单,但它不会将对象传递给服务器站点上的函数。对象始终为空。我错过了什么 JavaScript函数:Asp.net Ajax Post对象始终为空,asp.net,asp.net-mvc-3,asp.net-ajax,Asp.net,Asp.net Mvc 3,Asp.net Ajax,我有一个表单,里面有几个控件。当用户选择一个状态时,我正在向服务器发送帖子,以获取学校列表。发布后,我丢失了表单中键入的值。我决定获取这些值并将它们保存在会话变量中。我现在遇到的问题是,我的函数有6个以上的参数。我想把它减少到最多3个。我正在序列化表单,但它不会将对象传递给服务器站点上的函数。对象始终为空。我错过了什么 JavaScript函数: @model StudentBookTrade.Models.Book @{ ViewBag.Title = "AddBook";
@model StudentBookTrade.Models.Book
@{
ViewBag.Title = "AddBook";
Layout = "~/Views/Shared/_RegularLayout.cshtml";
}
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.js" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
// document.getElementById('BookDescription-value').style.display = 'block';
$('#BookDescription-value').css('display', '');
$('#BookDescription').css('display', '');
$('.t-input').css('display', '');
$('.t-editor-button').css('display', '');
$('.t-widget t-editor t-header').css('display', '');
var SelectedState = $('#StateID').val();
var SelectedSchool = $('#Name').val();
var SelectedDepartment = $('#DepartmentName').val();
});
function changeState() {
var SelectedState = $('#StateID').val();
TestAddBook();
}
function TestAddBook() {
/*
Passing all the variables as shown below will work, but I will like to receive the object instead.
var bookName = $('#BookName').val();
var authorName = $('#Author').val();
var ISBNNumber = $('#ISNBNumer').val();
var description = $('#BookDescription-value').val();
var SelectedState = state;
var SelectedSchool = school;
var SelectedDepartment = department;
*/
var myData = $('#form1').serialize();
alert(myData);
$.ajax({
url: '@Url.Action("TestAddBook", "StudentBookTrade")',
type: 'POST',
datatype: 'JSON',
data: { myData: myData },
cache: false,
// contentType: 'application;text;charset=UTF-8',
success: function (e) {
window.location.href = window.location.href;
},
error: function (e) {
alert('error');
}
});
}
</script>
尝试更改:
var myData = $('#form1').serializeArray();
$.ajax({
url: '@Url.Action("TestAddBook", "StudentBookTrade")',
type: 'POST',
datatype: 'JSON',
data: { myData: JSON.stringify(myData)},
cache: false,
// contentType: 'application;text;charset=UTF-8',
success: function (e) {
window.location.href = window.location.href;
},
error: function (e) {
alert('error');
}
});
}
这一行末尾的句号是故意的吗<代码>数据:{myData:myData},.。最后是一个错误。我删除了它。请尝试
数据:$('#form1')。serialize(),
@AaronLS,它解决了我的问题。我正在拿东西。我将其更改为data:{data:$('#form1').serialize()}。我注意到表单中键入的所有值都是null。我添加了contentType:'应用程序/json;charset=UTF-8'到我的Ajax调用。现在,我得到一个内部错误500。
[HttpPost]
public JsonResult TestAddBook(Book mydata)
{
return Json(new { ok=true });
}
var myData = $('#form1').serializeArray();
$.ajax({
url: '@Url.Action("TestAddBook", "StudentBookTrade")',
type: 'POST',
datatype: 'JSON',
data: { myData: JSON.stringify(myData)},
cache: false,
// contentType: 'application;text;charset=UTF-8',
success: function (e) {
window.location.href = window.location.href;
},
error: function (e) {
alert('error');
}
});
}