programing

$.ajax - dataType

newsource 2023. 8. 18. 22:42

$.ajax - dataType

사이의 차이점은 무엇입니까?

contentType: "application/json; charset=utf-8",
dataType: "json",

대.

contentType: "application/json",
dataType: "text",
  • contentType는 서버로 전송되는 HTTP 헤더로, 특정 형식을 지정합니다.
    설정: 또는 XMLJSON XML을
  • dataType당신은 jQuery에게 어떤 종류의 반응을 기대해야 하는지 말하고 있습니까?
    JSON, XML, HTML 등이 필요합니다.기본값은 jQuery가 확인을 시도하는 것입니다.

설명서에는 이러한 항목에 대한 자세한 설명도 나와 있습니다.


특정한 경우, 첫 번째는 응답을 요청하는 것입니다.UTF-8두 번째는 신경 쓰지 않습니다.또한 첫 번째는 응답을 자바스크립트 객체로 처리하는 것이고, 두 번째는 문자열로 처리하는 것입니다.

첫 번째는 다음과 같습니다.

success: function(data) {
  // get data, e.g. data.title;
}

두 번째:

success: function(data) {
  alert("Here's lots of data, just a string: " + data);
}

contentType은 요청의 일부로 서버로 전송되는 데이터의 형식을 지정합니다(응답의 일부로도 전송될 수 있으며 나중에 자세히 설명).

dataType은 클라이언트(브라우저)가 수신할 데이터의 예상 형식을 지정합니다.

둘 다 교환할 수 없습니다.

  • contentType서버로 전송되는 헤더로, 서버로 전송되는 데이터의 형식(즉, 메시지 본문의 내용)을 지정합니다.이는 POST 및 PUT 요청에 사용됩니다.일반적으로 POST 요청을 보낼 때 메시지 본문은 다음과 같은 전달된 매개 변수로 구성됩니다.

==============================

샘플 요청:

POST /search HTTP/1.1 
Content-Type: application/x-www-form-urlencoded 
<<other header>>

name=sam&age=35

==============================

"name=sam&age=35" 위의 마지막 줄은 메시지 본문 및 내용입니다.형식은 메시지 본문에서 양식 매개 변수를 전달하고 있으므로 응용 프로그램/x-www-form-urlenced로 지정합니다.하지만 매개 변수만 보내는 것이 아니라 json, xml, ...을 보낼 수 있습니다.다음과 같이 합니다(다양한 유형의 데이터 전송은 RESTful 웹 서비스에서 특히 유용합니다).

==============================

샘플 요청:

POST /orders HTTP/1.1
Content-Type: application/xml
<<other header>>

<order>
   <total>$199.02</total>
   <date>December 22, 2008 06:56</date>
...
</order>

==============================

So The Content다음 시간을 입력합니다. application/xml. 이것이 바로 우리가 보내는 것이기 때문입니다.위의 예는 샘플 요청을 보여주었으며, 마찬가지로 서버에서 보낸 응답에도 다음과 같이 서버에서 보내는 내용을 지정하는 Content-Type 헤더가 있을 수 있습니다.

==============================

표본 반응:

HTTP/1.1 201 Created
Content-Type: application/xml
<<other headers>>

<order id="233">
   <link rel="self" href="http://example.com/orders/133"/>
   <total>$199.02</total>
   <date>December 22, 2008 06:56</date>
...
</order>

==============================

  • dataType예상되는 응답 형식을 지정합니다.Accept 헤더와 관련이 있습니다.JQuery는 응답의 내용 유형을 기반으로 추론을 시도합니다.

==============================

샘플 요청:

GET /someFolder/index.html HTTP/1.1
Host: mysite.org
Accept: application/xml
<<other headers>>

==============================

위의 요청은 서버에서 XML이 필요합니다.

당신의 질문과 관련하여,

contentType: "application/json; charset=utf-8",
dataType: "json",

여기서 UTF8 문자 집합을 사용하여 json 데이터를 보내고 있으며 서버에서 json 데이터를 반환할 것으로 예상됩니다.dataType에 대한 JQuery 문서에 따르면,

json 유형은 가져온 데이터 파일을 JavaScript 개체로 구문 분석하고 생성된 개체를 결과 데이터로 반환합니다.

따라서 성공 핸들러에서 얻을 수 있는 것은 적절한 Javascript 객체입니다(JQuery는 json 객체를 변환합니다).

반면에.

contentType: "application/json",
dataType: "text",

여기 JQuery 문서에 따르면 인코딩에 대해 언급하지 않았기 때문에 Json 데이터를 보냅니다.

문자 집합이 지정되지 않은 경우, 데이터는 서버의 기본 문자 집합을 사용하여 서버로 전송됩니다. 서버 측에서 이를 적절하게 디코딩해야 합니다.

그리고 dataType이 텍스트로 지정되어 있기 때문에 성공 핸들러에서 얻을 수 있는 것은 dataType에 대한 문서에 따라 일반 텍스트입니다.

텍스트 및 xml 유형은 데이터를 처리하지 않고 반환합니다.데이터는 단순히 성공 핸들러로 전달됩니다.

문서에 따라:

  • "json"응답을 JSON으로 평가하고 JavaScript 개체를 반환합니다.jQuery 1.4에서 JSON 데이터는 엄격한 방식으로 구문 분석됩니다. 잘못된 형식의 JSON은 거부되고 구문 분석 오류가 발생합니다. (적절한 JSON 형식에 대한 자세한 내용은 json.org 을 참조하십시오.)
  • "text"일반 텍스트 문자열입니다.

두 API를 동시에 호출하면 jQuery Ajax 로더가 제대로 작동하지 않습니다.이 문제를 해결하려면 다음을 사용하여 API를 하나씩 호출해야 합니다.isAsync속성이 Ajax 설정에 있습니다.또한 설정에 오류가 없어야 합니다.그렇지 않으면 로더가 작동하지 않습니다.예: POST/PUT/DELETE/GET 호출에 대한 내용 유형, 데이터 유형이 정의되지 않았습니다.

언급URL : https://stackoverflow.com/questions/2722750/ajax-datatype