Передача нескольких параметров из Jquery в веб-метод ASPX не работает - PullRequest
1 голос
/ 08 февраля 2020

У меня есть один массив, который содержит значение в следующем формате

var checkedvalue = [];
var x = "230";//Just now constant value pass
var y = "450";
checkedvalue.push({
     xCordi : x, 
     yCordi : y,
     bPart:txtName.value
});

в моем коде, у меня есть две кнопки, 1 для pu sh данных TEXTBOX в моем массиве. Теперь при втором нажатии кнопки я хочу передать это значение моему веб-методу и выполнить операцию.

 $AddtoDB.on('click', function () {
                    if ( $("#<%= divdynamicData.ClientID %>").is(':empty')){
                    alert("No Data Found");
                    }
                  else{
                    var ImageName="test.jpeg";
                    var ImagePath ="c:\drive";
                    IndertIntoDB(ImageName,ImagePath,checkedvalue);
                  }
            });

функция вызывается при наличии данных.

function IndertIntoDB(ImageName,ImagePath,checkedvalue){
         //alert(ImageName);
         //alert(ImagePath);
         //$.each( checkedvalue, function( key, value ) {  alert( value.xCordi + ": " + value.yCordi +":"+ value.bPart );});
         $.ajax({
            type: "POST",
            url: "ImageHotSpot.aspx/GetSaveData",
            data: JSON.stringify({ iName: ImageName,iPath:ImagePath,iData:checkedvalue }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                alert("DataInserted");
        }

    });

Теперь я хочу повторить checkarray в веб-методе, но я получил ошибку.

  //}
        [System.Web.Services.WebMethod]
        public static void GetSaveData(string iName, string iPath, string[] iData)
        {

        }

1 Ответ

1 голос
/ 09 февраля 2020

Этот ответ на первый взгляд, так как я не смог извлечь дополнительную информацию.

Надеюсь, это поможет .

Так выглядит ваша переменная зарегистрированного значения в js код.

var checkedvalue = [];
var x = "230";//Just now constant value pass
var y = "450";
checkedvalue.push({
     xCordi : x, 
     yCordi : y,
     bPart:txtName.value
});

И это ваши ajax данные запроса.

data: JSON.stringify({ iName: ImageName,iPath:ImagePath,iData:checkedvalue })

Вот метод, который вызывается с ajax.

public static void GetSaveData(string iName, string iPath, string[] iData)

Теперь я не очень знаком с ajax вызовом aspx. Обычно есть контроллер с MVC.

, так как вы не упоминаете об ошибке в исходном сообщении.

Я думаю, Вы получаете Null reference exception с checkedvalue->iData. C# не может десериализовать сложный объект из javascript, не имея специфики. Имея в виду объект c#, он передает null.

Массив строк будет работать следующим образом.

var checkedvalue = [];
checkedvalue.push("Hello"); //etc push other strings

Вам нужен класс c# как этот. Предполагая, что они имеют тип string все три. Из контекста я считаю, что xCordi, yCordi относятся к типу int и не стесняйтесь их менять. Также удалите "" из вашего js кода.

public class SomeClass{
     public string xCordi {get;set;} //change string to int
     public string yCordi {get;set;} //change string to int
     public string bPart {get;set;}
}

public static void GetSaveData(string iName, string iPath, string[] iData) -> public static void GetSaveData(string iName, string iPath, List<SomeClass> iData) или public static void GetSaveData(string iName, string iPath, SomeClass[] iData)

Тогда ваш метод ajax должен работать и c# должен быть в состоянии десериализовать объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...