无法序列化Ajax表单

时间:2014-01-06 20:33:44

标签: c# ajax asp.net-mvc-4

我正在尝试创建一个下拉菜单,无论何时选择一个选项,它都需要更新数据库中的一行。我正在使用此代码创建下拉菜单

表格

using (Ajax.BeginForm("PartialViewName", "admin", null, new AjaxOptions
        {
            HttpMethod = "Post",
            InsertionMode = InsertionMode.Replace,
            //LoadingElementId = "LoadingLink",
            UpdateTargetId = "PartialViewName"

        }, new { id = "connectNewForm" }))

下拉代码

<select name="statusDD" onchange="ChangeStatus(this.value)">
            <option value="">Update Status</option>
            <option value="1">Open</option>
            <option value="2 ">In Progress</option>
            <option value="3">Pending</option>
            <option value="4">To Be Verified</option>
            <option value="5">Approved</option>
            <option value="6">Disapproved</option>
            <option value="7">Closed</option>
        </select>

ChangeStatus

function ChangeStatus() {

    var form = jQuery(".FormID");

    var formData = form.serialize();

    $.ajax({
        url: "/Controller/ActionResult",
        data: formData,
        cache: false,
        error: function (e) {

            if (form == null) {
                alert("DIDN'T WORK FORM IS NULL");
            }
            else {
                alert("DIDN'T WORK something else");
            }


        },
        success: function (response) {
            // A response to say if it's updated or not
            alert("worked");
        }
    });

}

在控制器中

public ActionResult UpdateStatus(int id, FormCollection formValues)
  {

    int ID = util.IntUtilParse(formValues["ID"]);
    int newStatus = util.IntUtilParse(formValues["Status"]);
    using (var dbContext = new Project.OpenAccess.DataBase())
    {
        //var swm = dbContext.StoredProcedure(
        var swm = dbContext.StoredProcedure(ID, newStatus);
        dbContext.SaveChanges();

        return PartialView();
    }
}

每当我选择一个选项时,它会通过ajax然后抛出一个错误并且永远不会进入控制器。我对Ajax很新,我不确定它是怎么回事。

1 个答案:

答案 0 :(得分:0)

$.ajax({
    url: "/Controller/ActionResult",
    data: formData,
    cache: false,

尝试更改为

$.ajax({
    url: 'http://localhost\\:#####/{Controller Name}/UpdateStatus',
    data: formData,
    type: "POST",
    cache: false,

不是100%的应用程序逻辑,但这就是你没有击中控制器的原因。请注意,占位符指示控制器的名称,因为它的名称未发布。例如,如果名称为CustomerController,那么您的ajax网址将如此url: 'http://localhost\\:#####/Customer/UpdateStatus'

相关问题