2013-07-26 12 views
8

次のバックボーンcollection.fetchコードは何らかの理由でエラーを起こしてエラーハンドラにジャンプしますが、実際にはエラーハンドラのパラメータは何か分かりません。エラーが発生すると、モデル、xhrおよびoptionsパラメータは定義されません。私は間違って何をしていますか?backbonejs collection.fetchエラーハンドラ

var onErrorHandler = function(model, xhr, options) { 
     alert(options); 
    }; 

    that.collection = new MembersCollection([]); 
    that.collection.fetch({ success : onDataHandler, error: onErrorHandler, dataType: "jsonp" }); 

@muistooshort:私は完全に、JSの引数についてその先端に感謝を忘れてしまいました。ここで

は、私が見つけたものです...

Arguments[0] = looks like its just the letter "d" 
Arguments[1] = is an object. Has readyState, responseText, status, statusText 
Arguments[2] = is an object. Exactly the same as [1] 

状態= 200とテキストは "OK" です。 responseTextは、PHPサーバーモデルから受け取ると期待されるJSONデータです。

ここで、なぜ、そのcollection.fetchメソッドがエラーハンドラに成功の結果を送信するのかという疑問があると思いますか?私はフェッチコールバックの中のそれらのハンドラのシーケンスが重要であるとは思わない。それは?

+2

あなたは本当に「未定義」ですか?あなたはいつも 'console.log(arguments)'を使って、正確に何が渡されているかを知ることができます。 –

+0

jsonpリクエストに必要なajaxオプションの一部が欠落しています。 @stackoverflow.com/questions/7202603/jquery-ajax-jsonp –

+0

@muistooshort:私は完全にjs引数について忘れていました。ここに私が見つけたものがあります... – Locohost

答えて

15

Okフェッチコールバックと成功/エラーハンドラのparamsシグネチャが見つかりました。これらが正しく設定されたので、フェッチは期待通りに機能しています。これは作業コードです...

var onDataHandler = function(collection, response, options) { 
     console.log('membersview fetch onedatahandler'); 
     that.render(); 
    }; 

    var onErrorHandler = function(collection, response, options) { 
     console.log('membersview fetch onerrorhandler'); 
     alert(response.responseText); 
    }; 

    that.collection = new MembersCollection([]); 
    that.collection.fetch({ success : onDataHandler, error: onErrorHandler }); 

回答ありがとうございます。私はあなたのアドバイスを大いに必要としており、感謝しています:-)

関連する問題