2013-07-24 3 views
4

내 응용 프로그램 중 하나에서이 문제가 발생하여이를 제거하고 문제가 여전히 발생하는 작은 테스트 환경을 설정했습니다.크롬, IE에서 낸시 모델 바인딩이 작동하지 않습니다.

나는

self.save = function (item, url, success) { 
    $.ajax({ 
     type: "post", 
     data: JSON.stringify(item), 
     contentType: "application/json, charset=utf-8", 
     traditional: true, 
     datatype: "json", 
     url: self.domain + url, 
     success: success, 
     error: self.error 
    }); 
}; 

다음 아약스 호출을 사용하여 다음과 같은 객체 (JSON)

{ 
    "eventName":"Testing from Services", 
    "tickets":10, 
    "_date":"10/10/2013", 
    "_time":"8:00 PM", 
    "ticketsLocation":"Testing from Services", 
    "date":"2013-10-11T00:00:00.000Z" 
} 

을 게시 한 후 서버에서 다음 코드를 사용하여 데이터를 바인딩하고

var Model = this.Bind<PropertyType>(); 

여기서 PropertyType이 올바른 유형 (Event)입니다. 여기

이 파이어 폭스에 완벽하게 잘 작동 참조

public class Event 
{ 
    public string EventName { get; set; } 
    public int Tickets { get; set; } 
    public Venue Venue { get; set; } 
    public string TicketsLocation { get; set; } 
    public DateTime Date { get; set; } 
    public List<EventRequest> Requests { get; set; } 
} 

에 대한 Event 클래스입니다. Chrome 및 IE에서 Model은 모든 null 값을 갖는 Event 개체가됩니다. 필자가 (Fiddler를 사용하여) 말할 수있는 한, 게시물 요청은 모든 브라우저간에 정확히 동일합니다. 나는 또한이 문제를 다른 컴퓨터에서 테스트하고, 내 컴퓨터 및/또는 브라우저를 배제했습니다.

아이디어가 있으십니까? 브라우저가 Nancy 모델 바인딩에 어떤 영향을 미치는지 이해할 수 없습니다 ...

답변

8

간단한 대답은 content-type이 유효하지 않다는 것입니다. 사람들이 당신에게 말할 수도있는 것에도 불구하고 application/json, charset=utf-8 콘텐츠 유형과 같은 것은 없습니다. charset 콘텐츠 유형에 유효한, 옵션, 확장에도 불구하고 그것은/6 IANA considerations

JSON 텍스트에 대한 MIME 미디어 유형의 응용 프로그램입니다 당신이 여기 http://www.ietf.org/rfc/rfc4627.txt?number=4627 섹션에 대해 읽을 수 있습니다 application/json

적용되지 않습니다 json.

유형 이름 : 응용 프로그램

서브 타입 이름 : JSON

필수 매개 변수 : N/A

선택적 매개 변수 : N/인코딩에 대한 추가 설명과 함께

인코딩 고려 사항 : UTF-8 인 경우 8 비트. 이진 UTF-16 또는 요컨대

JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON 
is written in UTF-8, JSON is 8bit compatible. When JSON is 
written in UTF-16 or UTF-32, the binary content-transfer-encoding 
must be used. 

UTF-32, JSON 이미이면 암시 utf-8. 사실, 섹션 3. Encoding 아래에 있습니다.

JSON 텍스트는 유니 코드로 인코딩되어야합니다. 기본 인코딩은 UTF-8입니다.

application/json에 보내고 당신이이

+0

와우 :-), 나는 그것을 그렇게했다 믿을 수 없어하는 데 도움이

희망을 갈 설정해야합니다. 당신의 도움을 주셔서 감사합니다. – gwely

관련 문제