Ajax表单在ASP.NET MVC中两次提交调用方法

时间:2019-01-23 08:51:04

标签: ajax asp.net-mvc

当我发送具有2个对象的ajax请求时,发生了一种奇怪的情况 第一次传递带有正确值的第二个obj,而第一个对象为null。然后第二次调用传递带有值的第一个obj,第二个传递null

这是我的ajax方法

var serializedForm = $(form).serialize();
var postData = {
    merchTask: obj,
    items: arrItems
};
$.ajax({
    type: "POST",
    url: $(form).attr('action'),
    contentType: "application/json; charset=utf-8",
    dataType:'json',
    data: JSON.stringify(postData),
    success: function (response) { 
        alert('done');
    },
     error: function (xhr, status, error) {
         alert("Oops..." + xhr.responseText);
     }
});    

这是我在控制器中执行的操作

    public ActionResult EditTask(Task merchTask, string[] items)
    {
        short CompanyID = Convert.ToInt16((gSessions.GetSessionValue(gSessionsData.Company) as Company).ID);
        try
        { 
            merchTask.CompanyID = CompanyID; 
            if (merchTask.TaskID != 0)
            {
                taskTemplatesBF.Update(merchTask);
            }
            else
            {
                taskTemplatesBF.InsertMerchTask(merchTask);
            } 
            string[] selectedLst = items;
            foreach (string item in selectedLst)
            { 
                taskTemplatesBF.InsertItemsLink(CompanyID,merchTask.TaskID,merchTask.ItemCode);
            } 
        }
        catch (Exception ex)
        {
            if (ex.InnerException != null)
            {
                ModelState.AddModelError("", ex.InnerException.Message);
            }
            ModelState.AddModelError("", ex.Message);
        }

        return RedirectToAction("TasksTemplates", "Merch");

    }

*我找到了一种解决方法,可以在不同的ajax中分别发送每个对象 但是当我在一个请求中发送它们时怎么了?

1 个答案:

答案 0 :(得分:1)

您在问题中添加了很多代码,但是错过了实际需要的代码。

好的,如下所示在表单峰会事件中添加event.preventDefault();event.stopImmediatePropagation();函数:

$(document).ready(function(){

  $("formId").on('submit',function(event){

       event.preventDefault();
       event.stopImmediatePropagation();


       var serializedForm = $(form).serialize();
       var postData = {
             merchTask: obj,
             items: arrItems
        };

       $.ajax({
            type: "POST",
            url: $(form).attr('action'),
            contentType: "application/json; charset=utf-8",
            dataType:'json',
            data: JSON.stringify(postData),
            success: function (response) { 
                   alert('done');
             },
            error: function (xhr, status, error) {
                alert("Oops..." + xhr.responseText);
            }
        });    
  });
});

希望这可以解决您的问题。