JSON을 통해 선택적 매개 변수를 웹 메드로 전달하려면 어떻게합니까?
문제
데이터베이스에서 관리 호출을 수행하는 데 사용하려는 다음 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)
바보 같은 오류가 있지만 거기에 있습니다.
다른 팁
'선택적'매개 변수와 같은 것은 없습니다. 사용하지 않은 매개 변수에 대한 기본값을 전달하십시오.