문제

나는 현재 멋진 jQuery 플러그인 'Week Calendar'를 구현하려고 노력하고 있습니다.여기) 내 간단한 asp.net 웹 사이트에서. 나는 캘린더에 데이터를 보내고 클라이언트 측 이벤트 (이벤트 생성, 이벤트 수정 등)에 응답하기 위해 두 개의 [WebMethods]를 설정했습니다.

ASP.NET의 객체의 자동 직렬화 WebMethods를 사용할 때 데이터를 다시 보낼 때 잘 작동하는 것처럼 보이지만 반대가 발생하면 문제가 발생합니다.

캘린더 이벤트를 서버로 다시 보내는 JavaScript 코드는 다음과 같습니다.

save: function() {
                    calEvent.id = id;
                    id++;
                    calEvent.start = new Date(startField.val());
                    calEvent.end = new Date(endField.val());
                    calEvent.title = titleField.val();
                    calEvent.body = bodyField.val();

                    $calendar.weekCalendar("removeUnsavedEvents");
                    $calendar.weekCalendar("updateEvent", calEvent);
                    $dialogContent.dialog("close");
                    //SAVE TO DATABASE

                    $.ajax({
                        type: "POST",
                        url: "Tracker.aspx/AddEvent",
                        data: calEvent,
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function(data) {
                            alert("saved");
                        }
                    });

현재 서버에 '스터브 메소드'가 있습니다.

[WebMthod]    
public static string AddEvent(Event e)
        {
            //save event to database and return something
            return "done";
    }

그러나 이벤트를 추가 할 때 다음과 같은 예외를 선택하고 있습니다.

유효하지 않은 JSON 원시 : 시작.

서버에서 내 이벤트 객체는 다음과 같이 구성됩니다.

[DataContract]
public class Event
{
    [DataMember]
    public int id { get; set; }
    [DataMember]
    public string title { get; set; }
    [DataMember]
    public string body { get; set; }
    [DataMember]
    public string start { get; set; }
    [DataMember]
    public string end { get; set; }
}
도움이 되었습니까?

해결책

다음과 같이 웹 서비스에 대한 호출을 수정하면 다음과 같이했습니다.

$.ajax({
                        type: "POST",
                        url: "Tracker.aspx/AddEvent",
                        data: '{e : ' + JSON.stringify(calEvent) + '}',
                        contentType: "application/json; charset=utf-8",
                        dataType: "text",
                        success: function(data) {
                            alert("saved");
                        }
                    });

JSON.stringify 함수를 사용하여 서버로 전송되는 JSON의 형식으로 바이올린을 바이어링해야했습니다.

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