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

Posted

技术标签:

【中文标题】如何通过ajax调用将多个对象发送到Web方法【英文标题】:How to send multiple objects to web method through ajax call 【发布时间】:2018-07-31 16:19:50 【问题描述】:

我想在 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】:

您不能将两个单独的对象发布到 POST API。

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

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

包装类可以如下:

public class RequestWrapper

    public CreateCase objEmp  get; set; 
    public srcCustlst[] objMem  get; set; 


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

【讨论】:

以上是关于如何通过ajax调用将多个对象发送到Web方法的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 发送到 web 方法?

如何通过 ajax 调用将 html 表单数据发送到 node.js 服务器?

将 AJAX 调用上的对象发送到 WebMethod

如何通过 AJAX 将 jquery 对象数据发送到 php?

如何将带有上下文变量的 Django 模板发送到 Ajax 调用?

如何使用ajax将多个数据从控制器发送到页面html