2013-07-26 20 views
8

下面的骨幹collection.fetch代碼觸發,出於某種原因錯誤,然後跳轉到錯誤處理程序(如預期的),但我真的不知道錯誤處理程序參數是什麼。當錯誤觸發時,模型xhr和options params不確定。我究竟做錯了什麼?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

你確定他們都是'undefined'嗎?你總是可以通過'console.log(arguments)'來看看究竟傳遞了什麼。 –

+0

你錯過了jsonp請求的一些必需的ajax選項。 http://stackoverflow.com/questions/7202603/jquery-ajax-jsonp –

+0

@ muistooshort:我完全忘了js的參數,謝謝你的提示。這是我發現的... – Locohost

回答

15

好吧,我發現獲取回調和成功/錯誤處理程序的參數簽名。現在,這些設置正確,提取按預期工作。這是工作代碼...

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 }); 

謝謝你們的答覆。我非常需要/欣賞你的建議:-)