programing

dataType vs accepts - Ajax 요청

javajsp 2023. 8. 17. 20:46

dataType vs accepts - Ajax 요청

Ajax Request에서 accepts와 dataType의 차이를 이해하려고 합니다.설명서 상태:

문서화

acceptes(기본값: DataType에 따라 다름) Type: PlainObject 반환할 응답의 종류를 서버에 알려주는 요청 헤더로 전송되는 내용 유형입니다.

dataType(기본값:지능형 추측(xml, json, 스크립트 또는 html)유형: 문자열 서버에서 반환할 데이터 유형입니다.

기본적으로 같은 것인가요? 같은 목적을 가지고 있습니다.

여기에, 바라건대, 정확한 답이 있습니다.

accepts옵션을 변경할 수 있습니다.Accept요청의 머리글

이 옵션을 변경하면Accept요청의 헤더가 지정된 헤더로 설정됩니다.문자열이 아니라 승인된 응답의 MIME 유형을 매핑하는 오브젝트입니다.맘에 들다{ text: "text/plain", html: "text/html" }.그Accept헤더는 서버가 요청에 의해 예상되는 형식으로 응답을 제공하기 위해 사용하거나, 요청에 의해 예상되는 형식 중 하나로 응답을 제공할 수 없는 경우 실패할 수 있습니다.

정말 중요한 것은 적어도 jQuery 1.11.3(내가 테스트한 곳)에서는 이 옵션이 작동하지 않는 것처럼 보인다는 것입니다. 대신에 나는 다음을 사용하여 헤더를 변경할 수 있었습니다.headers옵션:headers: {Accept : "text/json"}.

dataType옵션을 사용하여 응답을 사전 처리할 수 있습니다.

정의한 경우dataType요청의 응답은 성공 핸들러가 사용할 수 있기 전에 jQuery에 의해 사전 처리됩니다.예:

한다면json지정된 경우, 다음을 사용하여 응답을 구문 분석합니다.jQuery.parseJSON개체로 성공 처리기에 전달되기 전에.

한다면script지정됨,$.ajax()서버에서 수신한 JavaScript를 실행한 후 성공 처리기에 문자열로 전달합니다.

자세한 내용은 "데이터 유형" 섹션을 참조하십시오.

그런 경우에는dataType설정되지 않았습니다.Content-Type응답의 사전 처리가 응답에 수행되어야 하는 작업을 결정합니다.변경 내용은 다음과 같습니다.dataType변경할 것입니다.Accept헤더도.일반적으로 변경할 필요가 없습니다.Accept머리글을 혼자서.

request.message

<?php
if(strpos($_SERVER["HTTP_ACCEPT"],"text/javascript") === false)
    exit("I only provide text/javascript responses");

echo "alert('This is my response!')";

색인.

<button id="send">Send</button>
<div id="response"></div>

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
$(function(){
    
    $("#send").click(function(){
        $.ajax({
            method: "GET",
            url: "request.php",
            dataType: "script" // Change this to "text" and you will see the difference
        }).done(function(data) {
            $("#response").text(data);
        });
    });
    
    
});
</script>

그 때.dataType으로 설정됨"script"Accept헤더는 다음을 포함합니다."text/javascript"그래서 시험은request.php통과할 것입니다.돌아올 것입니다."alert('This is my response!')"그리고 왜냐하면dataType으로 설정됨"script"jQuery는 이를 Javascript로 실행한 다음 일반 텍스트로 성공 처리기에 전달합니다.

▁the경우▁you▁change▁ifdataType"text"그자리의 Accept에 헤에포지않이 포함되지 ."text/javascript" 그서시험에 대한 .request.php실패합니다.돌아올 것입니다."I only provide text/javascript responses" 그고왜냐면하리▁the 때문에.dataType으로 설정됨"text"jQuery는 일반 텍스트로 성공 처리기에 전달합니다.

언급URL : https://stackoverflow.com/questions/33060712/datatype-vs-accepts-ajax-request