回答:
contentType
特定の形式を指定してサーバーに送信されるHTTP ヘッダーです。dataType
jQueryにどのような応答を期待するかを伝えています。$.ajax()
ドキュメントは、これらの完全な説明があります。
あなたの特定のケースでは、最初は応答がにあることを要求しUTF-8
、2番目は気にしません。また、1つ目は応答をJavaScriptオブジェクトとして扱うことで、2つ目は応答を文字列として扱うことです。
したがって、最初は次のようになります。
success: function(data) {
// get data, e.g. data.title;
}
二番目:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
何ですか。つまり、2つの引用符の間に定義されていますか。
(ps:Nick Craverの答えは正しくありません)
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 Webサービスで特に役立ちます)。
==============================
サンプルリクエスト:
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",
ここでは、UTF8文字セットを使用してjsonデータを送信しており、サーバーからjsonデータが返されることを期待しています。dataTypeのJQueryドキュメントに従って、
jsonタイプは、フェッチされたデータファイルをJavaScriptオブジェクトとして解析し、作成されたオブジェクトを結果データとして返します。
したがって、成功ハンドラで取得するのは適切なjavascriptオブジェクトです(JQueryがjsonオブジェクトを変換します)
一方
contentType: "application/json",
dataType: "text",
ここでは、jQueryドキュメントに従って、エンコーディングについて言及していないため、jsonデータを送信しています。
文字セットが指定されていない場合、データはサーバーのデフォルトの文字セットを使用してサーバーに送信されます。これをサーバー側で適切にデコードする必要があります。
dataTypeがテキストとして指定されているため、dataTypeのドキュメントに従って、成功ハンドラーで取得できるのはプレーンテキストです。
textおよびxmlタイプは、処理なしでデータを返します。データは単に成功ハンドラに渡されます