카테고리 없음

[c#] 웹 서비스 호출이 잘못되었습니다. asmx 웹 서비스의 매개 변수 값이 누락되었습니다.

행복을전해요 2021. 2. 18. 22:19

웹 서비스 메서드에는 문자열 매개 변수가 필요하지만 고객 개체의 JSON 표현을 보냅니다. 기본 제공 JavaScriptSerializer가 매개 변수를 역 직렬화하려고 시도하고 오류를 일으키는 것 같습니다. 아래 예제에서 코드를 조정했습니다.

function getStatistic3() {

var response;
var allstat3 = [];

    $.ajax({
            type: 'GET',
                    url: 'http://localhost:52251/Service1.asmx/Statistic_3',
                            data: $('#Select1').val(),
                                    dataType: 'json',
                                            processData: false,
                                                    success: function (msg) {
                                                                response = msg.d;
                                                                            for (var i = 0; i < response.Items.length; i++) {
                                                                                            var j = 0;
                                                                                                            allstat3[i] = [response.Items[i].Interventie, response.Items[i].Sum[j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j]];
                                                                                                                        }
                                                                                                                                    fillDataTable(allstat3);
                                                                                                                                            },
                                                                                                                                                    error: function (e) {
                                                                                                                                                                alert("error loading statistic 3");
                                                                                                                                                                        }
                                                                                                                                                                            });
                                                                                                                                                                            }
                                                                                                                                                                            

웹 서비스 방법

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public ResponseStatistic_3 Statistic_3(string klant)
{
        Statistic_3[] items = Helper.Helper_Statistic_3(klant).ToArray();
                ResponseStatistic_3 response = new ResponseStatistic_3(items);
                        return response;
                        }
                        
-------------------

JSON.stringify () 메서드를 사용하여 웹 서비스로 보내기 전에 매개 변수를 문자열 화해야합니다.

function getStatistic3() {

var response;
var allstat3 = [];
var kla = $('#Select1').val();
**var dataJSon = JSON.stringify({ klant: kla })**

if (kla) {
    $.ajax({
            type: 'GET',
                    url: 'http://localhost:52251/Service1.asmx/Statistic_3',
                            data: dataJSon,
                                    contentType: 'application/json; charset=utf-8',
                                            dataType: 'json',
                                                    processData: false,
                                                            success: function (msg) {
                                                                        response = msg.d;
                                                                                    for (var i = 0; i < response.Items.length; i++) {
                                                                                                    var j = 0;
                                                                                                                    allstat3[i] = [response.Items[i].Interventie, response.Items[i].Sum[j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j], response.Items[i].Sum[++j]];
                                                                                                                                }
                                                                                                                                            fillDataTable(allstat3);
                                                                                                                                                    },
                                                                                                                                                            error: function (e) {
                                                                                                                                                                        alert("error loading statistic 3");
                                                                                                                                                                                }
                                                                                                                                                                                    });
                                                                                                                                                                                    } else {
                                                                                                                                                                                        alert("statistic 3 null");
                                                                                                                                                                                        }
                                                                                                                                                                                        }
                                                                                                                                                                                        


출처
https://stackoverflow.com/questions/22079873