(пс: ответ Ника Крейвера неверен)
contentType указывает формат данных, отправляемых на сервер как часть запроса (они также могут быть отправлены как часть ответа, подробнее об этом позже).
dataType указывает ожидаемый формат данных, которые будут получены клиентом (браузером).
Оба не взаимозаменяемы.
contentType
- заголовок, отправляемый на сервер, с указанием формата данных (т. Е. Содержимого тела сообщения), находящихся на сервере. Это используется с запросами POST и PUT. Обычно, когда вы отправляете запрос POST, тело сообщения содержит переданные параметры, такие как:
==============================
Пример запроса:
POST /search HTTP/1.1
Content-Type: application/x-www-form-urlencoded
<<other header>>
name=sam&age=35
==============================
Последняя строка выше «name = sam & age = 35» - это тело сообщения, а contentType определяет его как application / x-www-form-urlencoded, поскольку мы передаем параметры формы в теле сообщения.
Однако мы не ограничены только отправкой параметров, мы можем отправлять json, xml и т. Д., Например, так (отправка данных разных типов особенно полезна для веб-сервисов RESTful):
==============================
Пример запроса:
POST /orders HTTP/1.1
Content-Type: application/xml
<<other header>>
<order>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
==============================
Итак, ContentType на этот раз: application / xml, потому что это то, что мы отправляем.
В приведенных выше примерах показан пример запроса, аналогично, ответ, отправляемый с сервера, также может иметь заголовок Content-Type, определяющий, что сервер отправляет следующим образом:
==============================
образец ответа:
HTTP/1.1 201 Created
Content-Type: application/xml
<<other headers>>
<order id="233">
<link rel="self" href="http://example.com/orders/133"/>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
==============================
dataType
указывает ожидаемый формат ответа. Это связано с заголовком Accept. JQuery попытается вывести его на основе Content-Type ответа.
==============================
Пример запроса:
GET /someFolder/index.html HTTP/1.1
Host: mysite.org
Accept: application/xml
<<other headers>>
==============================
Выше запроса ожидает XML от сервера.
По вашему вопросу
contentType: "application/json; charset=utf-8",
dataType: "json",
Здесь вы отправляете данные json, используя набор символов UTF8, и ожидаете возвращения данных json с сервера. Согласно документации JQuery для dataType,
Тип json анализирует извлеченный файл данных как объект JavaScript и
возвращает построенный объект в качестве данных результата.
Итак, обработчик успеха - это правильный объект javascript (JQuery преобразует объект json для вас)
* * Тогда тысяча шестьдесят три * * 1 064
contentType: "application/json",
dataType: "text",
Здесь вы отправляете данные json, так как вы не упомянули кодировку, согласно документам JQuery,
Если кодировка не указана, данные будут передаваться на сервер
используя кодировку сервера по умолчанию; Вы должны декодировать это соответствующим образом
на стороне сервера.
и так как dataType указан как текст, обработчик успеха, который вы получаете, представляет собой простой текст, согласно документам для dataType,
Типы text и xml возвращают данные без обработки. Данные
просто передается обработчику успеха