Diferenças entre contentType e dataType na função jQuery ajax


123

Eu tenho a seguinte função de retorno de chamada Jquery e tenho uma dúvida sobre isso (não conheço muito bem o 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); 
        }
    });

Como você pode ver esta função, basta executar uma solicitação AJAX para o back-end, definindo o parâmetro para essa solicitação.

Eu configurei que estou enviando a solicitação para uma URL, que a solicitação é uma solicitação POST e que os dados que estou enviando são a seguinte string:

"barapple"

Tenho algumas dificuldades para entender quais são as diferenças entre contentType e dataType

Eu acho que contentType especifica o tipo de dados que são aceitáveis ​​recebidos na resposta HTTP, está certo?

E dataType? O quê dizer? O tipo de dados que estou enviando na solicitação HTTP?

Nesse caso, é "texto" porque estou enviando uma sequência de texto que representa o código XML?


O objetivo do tipo de conteúdo e tipo de dados difere entre o uso do jQuery e o uso da API REST?
precisa saber é

Respostas:


172

A partir da documentação :

contentType (padrão: 'application / x-www-form-urlencoded; charset = UTF-8')

Tipo: String

Ao enviar dados para o servidor, use este tipo de conteúdo. O padrão é "application / x-www-form-urlencoded; charset = UTF-8", o que é bom para a maioria dos casos. Se você passar explicitamente um tipo de conteúdo para $ .ajax (), ele sempre será enviado ao servidor (mesmo que nenhum dado seja enviado). Se nenhum conjunto de caracteres for especificado, os dados serão transmitidos ao servidor usando o conjunto de caracteres padrão do servidor; você deve decodificar isso adequadamente no lado do servidor.

e:

dataType (padrão: palpite inteligente (xml, json, script ou html))

Tipo: String

O tipo de dados que você espera voltar do servidor. Se nenhum for especificado, o jQuery tentará deduzi-lo com base no tipo MIME da resposta (um tipo XML MIME produzirá XML, em 1,4 o JSON produzirá um objeto JavaScript, o script 1,4 executará o script e qualquer outra coisa será retornado como uma sequência).

Eles são essencialmente o oposto do que você pensou que eram.


3
Também contentTypeafeta os cabeçalhos, dataTypenão
Viney

83

insira a descrição da imagem aqui

Em inglês:

  • ContentType: Ao enviar dados para o servidor, use este tipo de conteúdo. O padrão é o application/x-www-form-urlencoded; charset=UTF-8que é bom para a maioria dos casos.
  • Accepts: O tipo de conteúdo enviado no cabeçalho da solicitação que informa ao servidor que tipo de resposta ele aceitará em troca. Depende DataType.
  • DataType: O tipo de dados que você espera do servidor. Se nenhum for especificado, o jQuery tentará deduzi-lo com base no tipo MIME da resposta. Pode ser text, xml, html, script, json, jsonp.

9
Boa visualização. Obrigado.
Dr. MAF
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.