использование jquery ajax для отправки сложного объекта в веб-метод на странице aspx - PullRequest
1 голос
/ 05 марта 2012

Я пытаюсь отправить сложный объект в мой WebMethod на странице aspx (asp.net 4.0), используя jquery 1.7.1 и json2.js

Что я достиг, так это отправил несколько параметров ввеб-метод на той же странице, и теперь я хочу вместо этого обернуть эти параметры в объект.

Итак, мой 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);
}

К сожалению, это не работает.Я устанавливаю точку останова в веб-методе, но это никогда не срабатывает.

Если я заменю код в методе 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");
}

работает как шарм.Так может кто-нибудь помочь мне с этим?Любая помощь очень ценится!

1 Ответ

0 голосов
/ 13 марта 2012

Я думаю, что ваша проблема в функции CreatePairObject, вы написали код и описание в верхнем регистре, и вы вкладываете свои объекты JSON (то, что приходит к веб-методу, это объект с атрибутом "pair", содержащий объект pair) , Попробуйте вместо этого напрямую сериализовать объект пары:

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