【问题标题】:using jquery ajax to send a complex object to a webmethod in a aspx page使用 jquery ajax 将复杂对象发送到 aspx 页面中的 webmethod
【发布时间】:2012-03-05 19:20:03
【问题描述】:

我正在尝试使用 jquery 1.7.1 和 json2.js 在 aspx 页面 (asp.net 4.0) 中将复杂对象发送到我的 WebMethod

我所做的是将多个参数发送到同一页面上的 web 方法,现在我想将这些参数包装在一个对象中。

所以我的 WebMethod 看起来像这样:

[WebMethod]
public static string ValidateControlInput(PairValue pair)
{
    var result = pair;
    return String.Format("Valid");
}

我的 javascript 方法如下所示:

$(document).ready(ValidateInput);

function ValidatePairInput(codeId, descriptionId, labelId) {

var pair = CreatePairObject(codeId, descriptionId);
    SendDataToValidate(pair, labelId);
}

function SendDataToValidate(dataToValidate, controlId) {

$.ajax({
    type: 'POST',
    url: 'NewDocument.aspx/ValidateControlInput',
    contentType: 'application/json; charset=utf-8',
    data: dataToValidate,
    dataType: 'json',
    success: function (data, textStatus) {
        var result = data.d;
        DisplayValidationMessage(controlId, result);
    }
});

}

function DisplayValidationMessage(controlId, result) {
    $('#' + controlId).text(result);
}

function CreatePairObject(codeId, descriptionId) {
    var pair = { };
    pair.Code = $('#' + codeId).val();
    pair.Description = $('#' + descriptionId).val();    
    var DTO = { 'pair': pair };
    return JSON.stringify(DTO);
}

很遗憾,这行不通。我在 web 方法中设置了一个断点,但从未命中。

如果我将 javascript 方法“CreatePairObject”中的代码替换为:

function CreatePairObject(codeId, descriptionId) {
    return JSON.stringify({ code: $('#' + codeId).val(), description: $('#' + descriptionId).val() });
}

以及带有此功能的网络方法:

[WebMethod]        
public static string ValidateControlInput(string code, string description)
{            
    return String.Format("Valid");
}

它就像一个魅力。那么有人可以帮我解决这个问题吗?非常感谢任何帮助!

【问题讨论】:

    标签: jquery asp.net ajax webmethod


    【解决方案1】:

    我认为您的问题出在 CreatePairObject 函数中,您编写了大写的代码和说明,并且您嵌套了 JSON 对象(到达 webmethod 的是一个具有“pair”属性的对象,其中包含 pair 对象) . 尝试直接序列化 pair 对象,而不是:

    function CreatePairObject(codeId, descriptionId) {
        var pair = { };
        pair.code = $('#' + codeId).val();
        pair.description = $('#' + descriptionId).val();    
        return JSON.stringify(pair);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-11-11
      • 2016-11-11
      • 2015-08-29
      • 1970-01-01
      • 2020-09-22
      • 2010-11-11
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      相关资源
      最近更新 更多