Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Ajax Post对象始终为空_Asp.net_Asp.net Mvc 3_Asp.net Ajax - Fatal编程技术网

Asp.net Ajax Post对象始终为空

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";

我有一个表单,里面有几个控件。当用户选择一个状态时,我正在向服务器发送帖子,以获取学校列表。发布后,我丢失了表单中键入的值。我决定获取这些值并将它们保存在会话变量中。我现在遇到的问题是,我的函数有6个以上的参数。我想把它减少到最多3个。我正在序列化表单,但它不会将对象传递给服务器站点上的函数。对象始终为空。我错过了什么

JavaScript函数:

@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');
                }
            });
    }