如何通过ajax调用将多个对象发送到Web方法

时间:2018-02-21 07:03:19

标签: jquery asp.net ajax webmethod

我想在ajax中发送2个对象,在这两个对象中,一个对象包含记录列表

任何人都可以帮助如何做到这一点,我使用下面的代码块但不能正常工作

var obj = {};
obj.ChangeDetails = "";
obj.ChangeInformation = "";
obj.ChangeVersion = "";
obj.CSProduct = "";  
obj.Description = $("#caseDesc").val();
obj.EndDate = $("#newSchEdDt").val();
obj.EndDateSpecified = $("#newSchEdTime").val();
obj.Environment = $('#caseEnv').find(":selected").text();  
obj.Operation = "";
obj.RiskAssessment = $("input[name=ccRisk]").val();
obj.SiteEnvironment = "";
obj.SOPDetails = $("#ccSOP").val();
obj.SOPReferenced = "";
obj.SOPVersion = $("#ccSOPVer").val();
obj.StartDate = $("#newSchStDt").val();
obj.StartDateSpecified = $("#newSchStTime").val();
obj.Subject = $("#caseSubj").val();

var Members= {};
Members.cstdetails = newCustList;

var postData = {
    objEmp: obj,
    objMem: Members
};   

$.ajax({
    type: "POST",
    url: "c9newcaseModel.aspx/CreateCase",     
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    traditional: true,   
    data: JSON.stringify(postData),

    success: function (result) {         
        alert(result.d)           
    },
    error: function (xhr) {
        alert("responseText: " + xhr.responseText);
    }
});

public static string CreateCase(CreateCase objEmp, srcCustlst[] objMem)
{ 

}

我创建了具有相应属性的CreateCase和srcCustlst类。

先谢谢

1 个答案:

答案 0 :(得分:1)

您无法将两个单独的对象POST到POST API。

而你可以做的是将两个类包含在另一个包装类中,然后将其作为输入传递给您的方法,并从客户端适当地形成JSON。

可以通过URL或身体将不同的数据发送到POST方法。但是在你的情况下,因为两者都是复杂的对象,更好的方法是使用一个包装类,它包含你拥有的两个类,并从客户端适当地传递数据。

包装类可以如下:

public class RequestWrapper
{
    public CreateCase objEmp { get; set; }
    public srcCustlst[] objMem { get; set; }

}

并且可能在您的帖子方法中将您的数据更改为data: postData,