IT Share you

jQuery에서 $ .getJSON ()과 $ .ajax ()의 차이점

shareyou 2020. 12. 12. 12:42
반응형

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

반응형