jQuery Ajax 함수에서 contentType과 dataType의 차이점


123

다음 Jquery 콜백 함수가 있고 그것에 대해 약간의 의구심이 있습니다 (Jquery를 잘 모릅니다).

$("form.readXmlForm").submit(function() {
    // Riferimento all'elemento form che ha scatenato il submit 
    var form = $(this);
    // Variabile che contiene il riferimento al bottone clickato 
    var button = form.children(":first");

    $.ajax({        // Viene eseguita la chiamata AJAX 
        type: "POST", // Tipo di richiesta: POST 
        // URL verso quale viene inviata la richiesta
        url: form.attr("action"),    
        // Dati XML inviati: 
        data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>", 
        // Tipo di media type accettabile dalla response: 
        contentType: "application/xml", 
        dataType: "text", 

        success: function(text) { 
            MvcUtil.showSuccessResponse(text, button); 
        }, 

        error: function(xhr) { 
            MvcUtil.showErrorResponse(xhr.responseText, button); 
        }
    });

보시다시피이 함수는이 요청에 대한 매개 변수를 설정하는 백엔드에 AJAX 요청을 실행하기 만하면됩니다.

요청을 URL로 보내고 요청이 POST 요청이며 보내는 데이터가 다음 문자열임을 설정했습니다.

"바 애플"

contentTypedataType 의 차이점을 이해하는 데 어려움이 있습니다.

contentType 이 HTTP 응답에서 수신 가능한 데이터 유형을 지정 한다고 생각 합니다. 맞습니까?

그리고 dataType? 뭐라고? HTTP 요청에서 보내는 데이터 유형은 무엇입니까?

이 경우 XML 코드를 rappresent하는 텍스트 문자열을 보내기 때문에 "텍스트"입니까?


콘텐츠 유형 및 데이터 유형 목적이 jQuery 사용과 REST API 사용간에 다른가요?
sofs1

답변:


172

로부터 문서 :

contentType (기본값 : 'application / x-www-form-urlencoded; charset = UTF-8')

유형 : 문자열

서버로 데이터를 보낼 때이 컨텐츠 유형을 사용하십시오. 기본값은 "application / x-www-form-urlencoded; charset = UTF-8"이며 대부분의 경우 괜찮습니다. 콘텐츠 유형을 $ .ajax ()에 명시 적으로 전달하면 데이터가 전송되지 않더라도 항상 서버로 전송됩니다. 문자 집합이 지정되지 않은 경우 데이터는 서버의 기본 문자 집합을 사용하여 서버로 전송됩니다. 서버 측에서이를 적절하게 디코딩해야합니다.

과:

dataType (기본값 : Intelligent Guess (xml, json, 스크립트 또는 html))

유형 : 문자열

서버에서 다시 기대하는 데이터 유형입니다. 아무 것도 지정하지 않으면 jQuery는 응답의 MIME 유형을 기반으로 추론을 시도합니다 (XML MIME 유형은 XML을 생성하고, 1.4 JSON은 JavaScript 객체를 생성하고, 1.4 스크립트는 스크립트를 실행하며, 그 밖의 모든 것은 문자열로 반환 됨).

그들은 본질적으로 당신이 생각했던 것과 반대입니다.


3
또한 contentType, 헤더에 영향을 dataType하지 않습니다
Viney

83

여기에 이미지 설명 입력

영어로:

  • ContentType: 서버로 데이터를 보낼 때이 콘텐츠 유형을 사용합니다. 기본값은 application/x-www-form-urlencoded; charset=UTF-8이며 대부분의 경우에 적합합니다.
  • Accepts: 요청 헤더에 전송 된 콘텐츠 유형으로, 응답으로 어떤 종류의 응답을 수락할지 서버에 알려줍니다. 에 달려있다DataType .
  • DataType: 서버에서 다시 기대하는 데이터 유형입니다. 아무것도 지정하지 않으면 jQuery는 응답의 MIME 유형에 따라 추론을 시도합니다. 일 수 있습니다 text, xml, html, script, json, jsonp.

9
멋진 시각화. 감사.
박사 MAF
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.