Qual é a diferença entre
contentType: "application/json; charset=utf-8",
dataType: "json",
vs.
contentType: "application/json",
dataType: "text",
contentType
é o cabeçalho HTTP enviado ao servidor, especificando um formato específico. dataType
você está dizendo ao jQuery que tipo de resposta esperar. A $.ajax()
documentação também possui descrições completas.
No seu caso particular, o primeiro está pedindo a resposta para a UTF-8
, o segundo não se importa. Além disso, o primeiro trata a resposta como um objeto JavaScript, o segundo a trata como uma string.
Então o primeiro seria:
success: function(data) {
// get data, e.g. data.title;
}
O segundo:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?(ps: a resposta dada por Nick Craver está incorreta)
contentType especifica o formato dos dados enviados ao servidor como parte da solicitação (eles também podem ser enviados como parte da resposta, mais sobre isso posteriormente).
dataType especifica o formato esperado de dados a serem recebidos pelo cliente (navegador).
Ambos não são intercambiáveis.
contentType
é o cabeçalho enviado ao servidor, especificando o formato dos dados (isto é, o conteúdo do corpo da mensagem) que está sendo enviado ao servidor. Isso é usado com solicitações POST e PUT. Normalmente, quando você envia uma solicitação POST, o corpo da mensagem é composto por parâmetros passados, como:==============================
Pedido de amostra:
==============================
A última linha acima "name = sam & age = 35" é o corpo da mensagem e contentType especifica-o como application / x-www-form-urlencoded, pois estamos passando os parâmetros do formulário no corpo da mensagem. No entanto, não estamos limitados a apenas enviar os parâmetros, podemos enviar json, xml, ... assim (enviar diferentes tipos de dados é especialmente útil nos serviços da web RESTful):
==============================
Pedido de amostra:
==============================
Portanto, o ContentType desta vez é: application / xml, porque é isso que estamos enviando. Os exemplos acima mostraram uma solicitação de amostra. Da mesma forma, a resposta enviada do servidor também pode ter o cabeçalho Content-Type especificando o que o servidor está enviando assim:
==============================
resposta da amostra:
==============================
dataType
especifica o formato da resposta a esperar. Está relacionado ao cabeçalho Accept. O JQuery tentará deduzi-lo com base no tipo de conteúdo da resposta.==============================
Pedido de amostra:
==============================
A solicitação acima está esperando XML do servidor.
Quanto à sua pergunta,
Aqui você está enviando dados json usando o conjunto de caracteres UTF8 e espera retornar dados json do servidor. De acordo com os documentos JQuery para dataType,
Portanto, o que você obtém no manipulador de sucesso é o objeto javascript adequado (o JQuery converte o objeto json para você)
enquanto que
Aqui você está enviando dados json, pois não mencionou a codificação, conforme os documentos do JQuery,
e como dataType é especificado como texto, o que você obtém no manipulador de sucesso é texto sem formatação, conforme os documentos para dataType,
fonte
conforme documentos :
"json"
: Avalia a resposta como JSON e retorna um objeto JavaScript. No jQuery 1.4, os dados JSON são analisados de maneira estrita; qualquer JSON malformado é rejeitado e um erro de análise é gerado. (Consulte json.org para obter mais informações sobre a formatação JSON adequada.)"text"
: Uma sequência de texto simples.fonte
O carregador do jQuery Ajax não está funcionando bem quando você chama duas APIs simultaneamente. Para resolver esse problema, é necessário chamar as APIs uma por uma usando a
isAsync
propriedade na configuração Ajax. Você também precisa garantir que não haja nenhum erro na configuração. Caso contrário, o carregador não funcionará. Por exemplo, tipo de conteúdo indefinido e tipo de dados para chamadas POST / PUT / DELETE / GET.fonte