다음 코드를 사용하여 ASP.net MVC 응용 프로그램의 데이터를 요청하고 있습니다. 또한 요청/응답을 볼 수 있도록 TcpTrace도 사용하고 있습니다.Firefox JQuery JSON 문제
if (isInteger($('#txtDay').val()) && isInteger($('#txtMonth').val()) && isInteger($('#txtYear').val())) {
$.ajax({
type: 'POST',
contentType: 'application/json; charset=utf-8',
url: strApi + 'wip/job/getsummary/' + $('#txtYear').val() + '/' + $('#txtMonth').val() + '/' + $('#txtDay').val(),
data: '{}',
dataType: 'json',
cache: false,
beforeSend: function(XMLHttpRequest) { ShowLoading(); },
success: function(data, textStatus) {
ShowJobSummaryList(data);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
HideLoading();
ShowStatus('unable to retrieve job summary list');
alert(XMLHttpRequest.statusText);
alert(textStatus);
},
complete: function(XMLHttpRequest, textStatus) {
HideLoading();
}
});
}
IE를 모두 사용하면 콘텐츠 유형이 올바르게 application/json으로 설정됩니다. 그러나 Firefox 3.5.5에서는 콘텐츠 유형이 누락되었습니다.
OPTIONS /api/wip/job/getsummary/2009/11/25 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,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
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
이렇게하면 ASP.net MVC가 XML을 반환합니다. Firefox가 콘텐츠 유형을 전송하지 않는 이유를 설명 할 수 있습니까?
조치 방법의 결과 유형은 어떤 유형의 결과입니까? –
작업 메서드는 json으로 직렬화 된 객체를 포함하는 ActionResult를 반환합니다 (요청의 콘텐츠 유형이 application/json 인 경우 charset = utf-8 또는 xml이 기본값으로 사용됨) – markpirvine
따라서 내장 된 JsonResult 유형을 사용하여 예를 들어 다음을 수행합니다. return json (objectToSerialize); –