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.