2016-04-13 4 views
0

このようなことは可能ですか?カスタムAJAXデータタイプ

"json/rows"というデータ型を作成して、サーバーが出力するテキストを解析して何かをしたい場合は、成功関数に移動しますか?私はそれが動作するはずだと思う方法で

例コード:

$.ajax({ 
    dataType: "json/rows", 
    dataTypeParser: function(response) { 
     response = JSON.parse(response); 
     response.rows = "test"; 
     return response; 
    }, 
    success: function(response) { 
     console.lo(response.rows); //console logs "test" 
    } 
}) 
+1

すべてのjson/rowsを使用が可能です。これはデフォルトの機能ではありませんが、もしそれが役に立つと思えば '$ .ajax()'関数をインクルードするように拡張することは可能でしょう。 –

+2

データ型として 'json'を使用すると何が問題になりますか?カスタムデータ型の場合、 'accepts'と' converters'パラメータを渡す必要があります。doc:http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings –

+0

@A.Wolffありがとう!私のJSONは、テーブル全体をダンプする特定のケースで約50MB必要ですが、独自のデータ型を作成するのに20MBしかかかりませんが、クライアントの側から余分な作業が必要です – Amit

答えて

2

the jQuery Documentationから:ここ

$.ajax({ 
    accepts: { 
    mycustomtype: 'application/x-some-custom-type' 
    }, 

    // Instructions for how to deserialize a `mycustomtype` 
    converters: { 
    'text mycustomtype': function(result) { 
     // Do Stuff 
     return newresult; 
    } 
    }, 

    // Expect a `mycustomtype` back from server 
    dataType: 'mycustomtype' 
}); 

ではなくapplication/x-some-custom-type

+2

カスタムMIMEタイプの規則があります。 'application/x-json-rows'は' json/rows'よりも適切でしょう。 – Quentin

+0

合意。答えはちょうど彼が求めているものに基づいていた.. –