JSON을 통해 선택적 매개 변수를 웹 메드로 전달하려면 어떻게합니까?

StackOverflow https://stackoverflow.com/questions/2267289

  •  20-09-2019
  •  | 
  •  

문제

데이터베이스에서 관리 호출을 수행하는 데 사용하려는 다음 JSON 클래스가 있습니다.

<script type="text/javascript">

    var CalendarManager = {

        defaultOptions: {
            staffcode: 0,      // required
            date: 0,           // required
            activityCode: 0,   // required
            clientCode: null,  // optional
            contactCode: null, // optional
            destination: '',   // optional/doesn't matter
            travelCode: null,  // optional
            miles: null,       // optional
            overnight: false,  // optional
            notes: ''          // optional/doesn't matter
        },

        createEvent: function(options) {
            var combinedOptions = $.extend(true, {}, this.defaultOptions, options);
            $.ajax({
                type: "POST",
                url: 'calendar/calendar-manager-ajax.aspx/CreateEvent',
                data: combinedOptions,
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function(data, textStatus, XMLHttpRequest) {
                    alert(textStatus + ", " + data);
                },
                error: function(data, textStatus, XMLHttpRequest) {
                    alert(textStatus + ", " + data);
                }
            });
        }
    };
</script>

그런 다음 내 페이지에서 그렇게 사용합니다.

<script type="text/javascript">
    CalendarManager.createEvent(); // random test
</script>

현재이 Ajax Call Fire를 다음 방법으로 받으려고 노력하고 있습니다.

[WebMethod()]
public static string CreateEvent(int staffcode, int date, 
    int activitycode, int? clientcode,
    int? contactCode, string destination, 
    int? travelcode, int? miles, 
    bool overnight, string notes)
{
    return null;
}

불행히도, 방법 CreateEvent 호출되지 않고 Ajax 오류가 발생합니다 (중단 점을 설정하면 실행이 중지되지 않습니다).

오류, [개체 xmlhttprequest

내가 변하면 data: combinedOptions 에게 data: "{}" 내 ASPX에 다른 방법을 추가합니다 (아래와 같이) 코드는 성공적으로 작동합니다.

[WebMethod()]
public static string CreateEvent()
{
    return null;
}

기본적으로 내 질문은 다음과 같습니다. 선택적 매개 변수를 WebMethod JSON 데이터를 제공 할 때?

매개 변수를 필요한 값으로 줄인 다음 사용할 수 있다는 것을 알고 있습니다. HttpContext.Request.Params 선택적 매개 변수의 값을 읽으려면 여기서 시도한 방식이 효과가 있다고 생각했을 것입니다.

편집하다

그만큼 XMLHttpRequest.responseText 오류의 값은 다음과 같습니다.

유효하지 않은 JSON 원시 : 스태프 코드.

이것은 나에게 문제의 향기를 더 많이 버리고있다 :(

도움이 되었습니까?

해결책 2

고쳤다. 두 가지 문제가있었습니다.

첫째, 모든 매개 변수의 경우가 잘못되었습니다 ( "활동 코드"가 아닌 "활동 코드").

그리고 나는 또한 이것을 사용합니다.

data: JSON.stringify(combinedOptions)

바보 같은 오류가 있지만 거기에 있습니다.

다른 팁

'선택적'매개 변수와 같은 것은 없습니다. 사용하지 않은 매개 변수에 대한 기본값을 전달하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top