2012-02-28 14 views
3

jQuery.ajax()を使用して外部APIからjsonp経由でデータを取得しています。jQuery dataFilterレスポンスが未定義

これは私のAJAXの設定です:私は前処理にエラー処理のための私の応答をdataFilter機能を使用したい

var ajax_options = { 
    dataType: 'jsonp', 
    jsonp: 'callback', 
    url: url, 
    data: parameters, 
    success: function (response) { 
     console.log(response); // works, prints the correct data 
    }, 
    dataFilter: function (response, type) { 
     console.log(response); // prints undefined 
     console.log(type); //prints "jsonp" 
    } 
}; 
$.ajax(ajax_options); 

。しかし、この関数の応答引数は常に定義されていません。ただし、成功関数では、正しい応答データが得られます。

あなたは何が問題であるか知っていますか?

+0

私は下に言及したコンバータに慣れていないんだが、jQueryのAjaxのページ:http://api.jquery.com/jQuery.ajax/は言う:「などJSONPとクロスドメインとしてAjaxリクエストの種類によっては、GET要求、XHRを使用しないでください;そのような場合、コールバックに渡されるXMLHttpRequestおよびtextStatusパラメータは未定義です " –

答えて

1

この問題はお尻の痛みであることを確認できます。実行する必要があるのは、$ .ajaxSetup({})を使用することです。コンバータと一緒に:

$ .ajaxSetup

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

その後、あなたはあなたのデータ型を処理するためのコンバータ、dataFilters、コールバック、および解析を使用する必要があります。

jQuery.Extensions - そのための

$.ajax({ converters: 'params go here' }); 

- コンバータ

http://api.jquery.com/extending-ajax/#Converters

あなたはは$ .ajaxSetupを経由してコンバータを使用するを持っていませんがあなたが直面しているシナリオ、すべてのデータあなたのjsonpがこのコンバーターをそれに適用する必要があるので、d。これは、期待される結果のタイプとニーズに基づいて、より現実的なコントロールを提供します。

関連する問題