jQuery에서 $ .getJSON ()과 $ .ajax ()의 차이점
ASP.NET MVC 작업을 호출하고 있습니다.
public JsonResult GetPatient(string patientID)
{
...
jQuery를 사용하여 JavaScript에서. 다음 호출이 작동합니다.
$.getJSON(
'/Services/GetPatient',
{ patientID: "1" },
function(jsonData) {
alert(jsonData);
});
그러나 이것은 그렇지 않습니다.
$.ajax({
type: 'POST',
url: '/Services/GetPatient',
data: { patientID: "1" },
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(jsonData) {
alert(jsonData);
},
error: function() {
alert('Error loading PatientID=' + id);
}
});
둘 다 작업 메서드에 도달하지만 환자 ID 값은 $ .ajax 호출시 null입니다. 일부 고급 콜백에 $ .ajax 호출을 사용하고 싶습니다.
어떤 생각이라도 감사합니다.
컨텐츠 타입
MVC 컨트롤러 작업에 대한 호출에서 해당 콘텐츠 유형을 지정할 필요가 없습니다. 특수 "application / json; charset = utf-8"콘텐츠 유형은 ASP.NET AJAX "ScriptServices"및 페이지 메서드를 호출 할 때만 필요합니다. jQuery의 기본 contentType "application / x-www-form-urlencoded"는 MVC 컨트롤러 작업을 요청하는 데 적합합니다.
해당 콘텐츠 유형에 대한 추가 정보 : JSON 하이재킹 및 ASP.NET AJAX 1.0이 이러한 공격을 피하는 방법
데이터
가지고있는 데이터 는 정확합니다. jQuery에 JSON 객체를 전달하면 POST 데이터에서 patientID = 1로 직렬화됩니다. 이 표준 형식은 MVC가 매개 변수를 예상하는 방식입니다.
ASP.NET AJAX 서비스를 사용하는 경우 매개 변수를 "{ 'patientID': 1}"와 같이 따옴표로 묶기 만하면됩니다. POST 데이터의 개별 변수가 아니라 JSON 개체를 나타내는 단일 문자열이 구문 분석 될 것으로 예상합니다.
JSON
이 특정 경우에는 문제가되지 않지만 JSON 객체에서 문자열 키나 값을 인용하는 습관을 갖는 것이 좋습니다. 실수로 자바 스크립트 예약 키워드를 따옴표없이 객체의 키 또는 값으로 사용하면 혼란스러워 디버그 문제가 발생합니다.
반대로 숫자 또는 부울 값을 인용 할 필요가 없습니다. 항상 개체에서 직접 사용하는 것이 안전합니다.
따라서 GET 대신 POST를 원한다고 가정하면 $ .ajax () 호출은 다음과 같습니다.
$.ajax({
type: 'POST',
url: '/Services/GetPatient',
data: { 'patientID' : 1 },
dataType: 'json',
success: function(jsonData) {
alert(jsonData);
},
error: function() {
alert('Error loading PatientID=' + id);
}
});
.getJson은 단순히 .ajax를 둘러싼 래퍼이지만 일부 설정이 기본값으로 지정되므로 더 간단한 메서드 서명을 제공합니다 (예 : dataType을 json으로, type to get 등).
NB .load, .get 및 .post는 또한 .ajax 메서드를 둘러싼 간단한 래퍼입니다.
바꾸다
data: { patientID: "1" },
와
data: "{ 'patientID': '1' }",
추가 읽기 : ASP.NET에서 jQuery를 사용할 때 피해야 할 3 가지 실수
$ .ajax, $ .get, $ .post, $ .getScript, $ .getJSON과 같은 jquery의 일부 기능에 대해 많은 혼란이 있습니다. 사용하고 언제 그렇게 할 때 이러한 유형의 혼란을 없애고 명확하게 설명하기 위해 아래에 설명되어 있습니다.
$.getJSON() function is a shorthand Ajax function (internally use $.get() with data type script), which is equivalent to below expression, Uses some limited criteria like Request type is GET and data Type is json.
Read More .. jquery-post-vs-get-vs-ajax
The only difference I see is that getJSON performs a GET request instead of a POST.
contentType: 'application/json; charset=utf-8'
Is not good. At least it doesnt work for me. The other syntax is ok. The parameter you supply is in the right format.
with $.getJSON()) there is no any error callback only you can track succeed callback and there no standard setting supported like beforeSend, statusCode, mimeType etc, if you want it use $.ajax().
참고URL : https://stackoverflow.com/questions/1076013/difference-between-getjson-and-ajax-in-jquery
'IT Share you' 카테고리의 다른 글
Node.js 및 WebSocket (Socket.io) 단위 테스트 (0) | 2020.12.12 |
---|---|
Go 채널은 어떻게 구현 되나요? (0) | 2020.12.12 |
InputStream을 FileInputStream으로 변환하는 방법 (0) | 2020.12.12 |
JSON을위한 좋은 CLI 도구는 무엇입니까? (0) | 2020.12.12 |
메모리 정렬 : alignof / alignas를 사용하는 방법? (0) | 2020.12.12 |