Проблема в том, что вы теряете контекст в ваших service.monitor
методах при вызове первоначально переданных обработчиков success
, error
, beforeSend
и complete
.
Взгляните на ajaxMonitor.service.js
, вам нужно заменить каждый из исходных вызовов обработчика на .call()
, чтобы поддерживать надлежащий контекст:
1) В service.monitorSuccess () :
origSuccess(data, textStatus, request);
//should be:
origSuccess.call(this, data, textStatus, request);
2) В service.monitorError () :
origError(request, status, errorThrown);
//should be:
origError.call(this, request, status, errorThrown);
3) В service.monitorBeforeSend () :
var abortEarly = origBeforeSend(request);
//should be:
var abortEarly = origBeforeSend.call(this, request);
4) В service.monitorComplete () :
var xhr = origComplete(request, status);
//should be:
var xhr = origComplete.call(this, request, status);
Я скопировал вашу настройку теста здесь, чтобы вы могли увидеть результаты: http://ncraver.com/AjaxTest/
Обратите внимание, что некоторые другие тесты не выполняются ... они не связаны с моими изменениями, это результат того, что мой сайт не работает с PHP, поэтому тесты получают неправильный ответ от этих .php
страницы:)