AJAX 요청에서 컨텐츠 유형 및 데이터 유형은 무엇입니까?


179

POST 요청에서 컨텐츠 유형 및 데이터 유형은 무엇입니까? 내가 이것을 가지고 있다고 가정 해보십시오.

$.ajax({
    type : "POST",
    url : /v1/user,
    datatype : "application/json",
    contentType: "text/plain",
    success : function() {

    },
    error : function(error) {

    },

가 contentType우리가 보낼거야? 위의 예에서 우리가 보내는 것은 JSON이고 우리가받는 것은 일반 텍스트입니까? 나는 정말로 이해하지 못한다.

답변:


304

contentType보내는 데이터의 유형이므로 기본값 application/json; charset=utf-8인 그대로있는 것이 일반적 application/x-www-form-urlencoded; charset=UTF-8입니다.

dataType서버에서 다시 기대하고 무엇 : json, html, text, 등 jQuery를이 성공 함수의 매개 변수를 채우는 방법을 알아 내기 위해이 사용됩니다.

다음과 같은 것을 게시하는 경우 :

{"name":"John Doe"}

그리고 다시 기대 :

{"success":true}

그럼 당신은해야합니다 :

var data = {"name":"John Doe"}
$.ajax({
    dataType : "json",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        alert(result.success); // result is an object which is created from the returned JSON
    },
});

다음을 기대하는 경우 :

<div>SUCCESS!!!</div>

그런 다음 수행해야합니다.

var data = {"name":"John Doe"}
$.ajax({
    dataType : "html",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

하나 더-당신이 게시하려는 경우 :

name=John&age=34

그런 다음 stringify데이터를 하지 말고 다음을 수행 하십시오.

var data = {"name":"John", "age": 34}
$.ajax({
    dataType : "html",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8", // this is the default value, so it's optional
    data : data,
    success : function(result) {
        jQuery("#someContainer").html(result); // result is the HTML text
    },
});

정말로 감사합니다 :)이 "성공"은 무엇입니까? 백엔드의 또 다른 json 파일입니까? 이 성공은 어떻게 이루어 집니까? 그게 내가 정말 좋아 알고 무엇인가
— user2759697

2
그것은 단지 일반적인 객체입니다-그러나 서버는 그것을 만들기로 결정했습니다. 웹 서버는 HTML, 텍스트 또는이 경우 이름이 "성공"이고 값이 true 인 단일 속성을 가진 JSON 객체와 같은 느낌을 보낼 수 있습니다. API 프레임 워크가 무엇인지 짐작할 수는 없지만 ASP.NET MVC의 C #에서는 다음과 같이 간단합니다.[HttpPost]public JsonResult user(Person postedPerson) { /* Save postedPerson to DB */ return Json(new { success = true }); }
— Joe Enos

1
Type Type $.ajax({ dataType : "html", ... 대신 $.ajax({ datatype : "html",... 대문자 T를 사용 하는 것이 중요합니다. jQuery API
— Vadim Levkovsky

1
@Jacques 나는 그들이 할 수 있었던 가정 requestContentType하고 responseDataType,하지만 당신은 그것을 몇 번 해봤하고 API를 이해하면 현실에서, 당신은 여분의 입력 보람 만들기에 충분 혼동되지 않습니다.
— Joe Enos

1
@stom 질문과 대답은 POST에만 국한되었지만 GET의 데이터로 일반 간단한 객체를 전달하면 키-값 쌍이있는 쿼리 문자열로 변환됩니다. 값이 중첩 된 복잡한 개체가있는 경우 어떻게 될지 확실하지 않지만 궁금한 점이 있으면 시도하기 어렵지 않습니다. 나는 실제 생활에서 그렇게하지 않을 것입니다. 어쨌든 GET에서 AJAX를 사용하는 경우는 거의 없습니다.
— Joe Enos

32

jQuery 문서에서-http: //api.jquery.com/jQuery.ajax/

contentType 서버로 데이터를 보낼 때이 컨텐츠 유형을 사용하십시오.

dataType 서버에서 다시 예상되는 데이터 유형입니다. 아무것도 지정하지 않으면 jQuery는 응답의 MIME 유형을 기반으로 추론하려고 시도합니다.

"text": 일반 텍스트 문자열.

따라서 contentType이 application/json되고 dataType 이되기를 원합니다 text.

$.ajax({
    type : "POST",
    url : /v1/user,
    dataType : "text",
    contentType: "application/json",
    data : dataAttribute,
    success : function() {

    },
    error : function(error) {

    }
});

감사합니다. 응용 프로그램 / json 에서이 응용 프로그램은 무엇입니까? 경로입니까?
— user2759697

1
@ user2759697 이는 JSON에 대해 정의 된 MIME 유형의 일부일뿐입니다. -이 질문을 참조하십시오 stackoverflow.com/questions/477816/...
— 리처드 달튼

4
그게 내가 좋아하는 것입니다 ... 명백한 진술에 대한 담당자를 얻으십시오 ...> _ <
— Christoph

1

http://api.jquery.com/jQuery.ajax/를 참조하십시오 . 여기에는 datatype 및 contentType에 대한 언급이 있습니다.

둘 다 서버에 대한 요청에 사용되므로 서버는 어떤 종류의 데이터를 수신 / 보낼지를 알 수 있습니다.

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