2010-03-04 6 views
3

OpenRasta 커뮤니티 문서 예제 에서처럼 제목이 단일 문자열 속성 인 Home 리소스가있는 매우 간단한 OpenRasta 앱이 있습니다.openrasta xml 요청이 json으로 반환되었습니다.

이 같은 자원에 대한 XML 및 JSON 데이터 계약을 모두 설정 한 :

jQuery를에서
ResourceSpace.Has.ResourcesOfType<Home>() 
    .AtUri("/home") 
    .HandledBy<HomeHandler>() 
    .AsXmlDataContract() 
    .And.AsJsonDataContract(); 

, 나는 JSON 데이터가 잘 얻을 수 있어요. 그러나 jQuery XML Ajax 요청을하면 JSON 데이터가 다시 반환됩니다.

내 jQuery 코드는 다음과 같습니다, 형식 오류가 parsererror :

오류 :

$.ajax(
{ 
    url: "/home", 
    dataType: "xml", 
    success: function(result) { 
     $('#xmlSpan').append($(result).find('Title').text()); 
    }, 
    error: function(request, status, ex) { 
     $('#xmlSpan').append('error: '); 
     $('#xmlSpan').append(status + ', '); 
     $('#xmlSpan').append(ex.toString()); 
    } 
}); 

추가되고 오류 정보는 다음과 같이보고 끝나는은

널 그러나 여기입니다 흥미로운 부분.

GET http://127.0.0.1:51041/home HTTP/1.1 
Host: 127.0.0.1:51041 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8 
Accept: application/xml, text/xml, */* 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 300 
Connection: keep-alive 
X-Requested-With: XMLHttpRequest 
Referer: http://ipv4.fiddler:51041/WebForm1.aspx 
Cache-Control: max-age=0 

... 그리고 내 대답은 다음과 같습니다 : 피들러에서, 내 요청은 다음과 같습니다

내 요청이 "수락 : 응용 프로그램/XML을"로 오는
HTTP/1.1 200 OK 
Server: ASP.NET Development Server/9.0.0.0 
Date: Thu, 04 Mar 2010 18:30:04 GMT 
X-AspNet-Version: 2.0.50727 
Content-Length: 18 
Cache-Control: private 
Content-Type: application/json; q=0.5 
Connection: Close 

{"Title":"Foooo!"} 

하지만 응답은 "application/json"(반환 된 데이터는 분명히 json 임).

내가 뭘 잘못하고 있니?

답변

4

마이크,

당신이 잘못 아무것도하지 않는

(미안 해요 그 후 질문 전에 보지 않았다)이 잘 jsut 작동합니다.

귀하의 수락 : 헤더는 귀하의 고객이 신청서/xml 또는 기타 (/)를 기꺼이받을 수 있도록 지정합니다. OpenRasta는 "다른 것"이 작동하고 json 코덱을 사용한다고 가정합니다.

당신이 동의

로 헤더를 변경하는 경우

:; Q = 0.9, /; 응용 프로그램/XML, 텍스트/XML을 Q를 = 0.8

그럼 당신은 괜찮을 shoudl. 또한, 단지 제거 / alltogether/말했다

, normaly/ 항상 openrasta의 콘텐츠 협상 algorythms에서 최후의 수단으로 넣어, 그래서이 결과는 매우 놀라운 일이다. 어떤 버전의 OR을 사용하고 있습니까?

+0

이번 주에 살펴 보겠습니다. 나는 방학에서 돌아 왔고 이것이 내가 얻을 수있는 첫 번째 기회를 분류 할 것이다. 후속 조치를 보내 주셔서 감사합니다. -Mike – kindohm

+1

내가 알게 된 것은 ... OR (2.0.3214.437)의 최신 릴리스 후보를 다운로드했지만 여전히 동일한 문제가있었습니다. 제안한대로 jQuery를 수정했습니다.아약스 호출이 수정 헤더를 수락 한 후 모든 일을 시작 : 가 beforeSend : 기능 (XHR) { 이 xhr.setRequestHeader ('응용 프로그램/XML, 텍스트/XML' '동의')} 이상적으로 을, 나는 생각 jQuery 개발자는 헤더가 수정되도록 걱정할 필요가 없습니다. 이제는 해결책을 알게되었지만 다른 사람들은 아마도이 문제를 해결할 것입니다. – kindohm

+2

나에게 맞는 콘텐츠 유형에 따라 자동으로 수락 헤더를 설정해야합니다. 내가 물건에 우선 순위를 매기 지 않고 jQuery에 대한 버그 보고서를 작성하겠습니다. – SerialSeb

관련 문제