Page 77 - jQuery для начинающих
P. 77

$.ajaxPrefilter(function( options ) {
                           if ( options.crossDomain ) {

                                  options.url = "http://my.net/proxy/" +
                                                   encodeURIComponent( options.url );
                                  options.crossDomain = false;

                           }
                    });


             Префильтры  можно  «вешать»  на  определенный  тип  dataType  (т.е.  в  зависимости  от
             ожидаемого типа данных от сервера будут срабатывать различные фильтры):



                    $.ajaxPrefilter("json script", function(options, original, jqXHR) {
                           /* ... */
                    });


             Ну и последнее, для переключение  dataType на какой-нить другой нам достаточно будет

             вернуть необходимое значение:


                    $.ajaxPrefilter(function( options ) {
                           // это наша функция-детектор необходимых URL
                           if ( isActuallyScript( options.url ) ) {

                                  // теперь «ждём» script
                                  return "script";
                           }

                    });


                    Будьте  очень  осторожны  когда  оперируете  глобальными  настройками,  да  ещё
                    через такую неявную фичу как фильтры – задокументируйте подобные подходы в
                    сопроводительной  документации,  иначе  разработчики  которые  будут  в
                    дальнейшем  сопровождать  ваш  код  будут  сильно  ругаться  (в  качестве  оных
                    можете оказаться и вы сами, ну через пару месяцев)




             Конверторы


             Конвертор  –  функция  обратного  вызова,  которая  вызывается  в  том  случае,  когда
             полученный типа данных не совпадает с ожидаемым (т.е. dataType указан неверно).


             Всё конверторы хранятся в глобальных настройках ajaxSettings:

                                                                                                         77


                                                                                        www.trk.kg
   72   73   74   75   76   77   78   79   80   81   82