6

重複の可能性:
$.ajax - dataType

私はjQuery 1.8.2を使用していますが、何らかの理由で'application/json'機能しませんが、標準呼び出し'json' として機能します。これはグリッチですか?バージョン関連の違い?または、2つの間に確立された違いはありますか?dataTypejquery ajax

$(document).ready(function() {
    $.ajax({
        type : "POST",
        url : '<c:url value="/url.htm" >',
        //dataType : "application/json", <-- does not work
        dataType: 'json' // <-- works
        success : function(data) {
            // do something          
        },
        error : function(data) {
            // do something else
        }
    });
});
4

3 に答える 3

11

dataTypeこれは、リクエストがjsonレスポンスを期待していることを意味します。

contentTypeapplication/json、リクエストがjsonデータを送信していることを意味します

たとえば、リクエストでjsonを送信するだけでなく、期待することもできます

$.ajax({
    type : "POST",
    url : url,
    contentType : "application/json", 
    dataType: 'json',
    data: JSON.stringify({some: 'data'}),
    success : function(data) {
        // do something          
    },
    error : function(data) {
        // do something else
    }
});

ここではjsonを送信し、xmlを期待しています

$.ajax({
    type : "POST",
    url : url,
    contentType : "application/json", 
    dataType: 'xml',
    data: JSON.stringify({xmlfile: 'file.xml'}),
    success : function(data) {
        // do something          
    },
    error : function(data) {
        // do something else
    }
});

そしてここであなたは送信していますx-www-form-urlencoded(jQueryはこれを自動的に設定します)、そしてjsonが戻ってくることを期待しています

$.ajax({
    type : "POST",
    url : url,
    dataType: 'json',
    data: {id: '1'},
    success : function(data) {
        // do something          
    },
    error : function(data) {
        // do something else
    }
});

contentType は、ContentTypeHTTP 要求ヘッダーを設定し、この要求の本文が指定されたタイプであることをサーバーに伝えます。
dataType は、Acceptヘッダーを設定して、これが必要な応答のタイプであることをサーバーに伝えます。

Accept:application/json, text/javascript, */*; q=0.01

ただし、サーバーが送信する応答のタイプに関係なく、jQuery は dataType フィールドに設定したタイプとして解析を試みます。

于 2012-12-06T02:12:57.427 に答える
1

"application/json" は、json の正しい MIME タイプです。ただし、 jquerydataTypeフィールドには、次の文字列のいずれかが必要です。

"xml"
"html"
"script"
"json"
"jsonp"
于 2012-12-06T02:13:21.837 に答える
1

json ドキュメントによると、正しい dataType は「json」です。

http://api.jquery.com/jQuery.ajax/

サポートされているオプションは次のとおりです。

  • xml
  • html
  • 脚本
  • json
  • jsonp
  • 文章
于 2012-12-06T02:13:23.650 に答える