2013-07-26 2 views
8

Следующий код базовой сборки.fetch вызывает ошибки по какой-либо причине, а затем переходит к обработчику ошибок (как и ожидалось), но я действительно не знаю, каковы параметры errorhandler. Параметры модели, 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". ОтветText - это точные данные JSON, которые я ожидал получить от модели сервера PHP.

Итак, теперь вопрос в том, почему метод collection.fetch отправляет результат успеха обработчику ошибок? Я не верю, что последовательность обработчиков в обратных вызовах выборки имеет значение. Имеет ли это?

+2

Вы уверены, что все они 'undefined'? Вы всегда можете 'console.log (arguments)' видеть, что именно передается. –

+0

вам не хватает некоторых необходимых параметров ajax для запроса jsonp. http://stackoverflow.com/questions/7202603/jquery-ajax-jsonp –

+0

@muistooshort: Я полностью забыл о аргументах js, спасибо за этот совет. Вот что я нашел ... – Locohost

ответ

15

Ok Я нашел подпись params для обратных вызовов fetch и обработчиков успеха/ошибок. Теперь, когда они установлены правильно, выборка работает как ожидалось. Этот рабочий код ...

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

Спасибо, ребята, за ваши ответы. Мне очень нужны/ценятся ваши советы :-)