Загрузка плагинов jQuery по умолчанию с сервера (AJAX) - PullRequest
2 голосов
/ 07 января 2011

Я работаю над приватным плагином jQuery в следующем формате:

    (function( $ ){
      var defaults = {};

      $.fn.cmFlex = function(opts) {

        this.each(function() {
            //Element specific options
            var o = $.extend({}, defaults, opts);

            //Code here
        });

        //code Here
      };
    })( jQuery );

Как я продолжу загружать параметры по умолчанию с сервера перед первым вызовом $ .cmFlex ()?

Ответы [ 2 ]

1 голос
/ 07 января 2011
$.getJSON("http://my.domain.com/prefsUrl?callback=?", function(defaults){
      $.fn.cmFlex = function(opts) {

        this.each(function() {
            //Element specific options
            var o = $.extend({}, defaults, opts);

            //Code here
        });

        //code Here
      };
});

Предполагая, что prefsUrl возвращает действительный ответ JSONP.Если вы не знакомы с JSONP, я предлагаю вам его погуглить.

0 голосов
/ 07 января 2011

У вас есть две опции:

  • Опция «Быстро и грязно» и «Безопасно»: Выполните синхронный вызов на сервер.Вы можете настроить объект ajax для блокировки браузера, пока он не получит ответ.В Ajax-методах jQuery есть опция async, которая по умолчанию установлена ​​в true.Если вы измените его на false, поток выполнения JS будет зависать до тех пор, пока вы не получите ответ от сервера.Это не очень хорошее решение, потому что, если ваш сервер не работает или генерация этих глобальных переменных занимает много времени, пользователь будет ждать его.
  • Чище, но «небезопасно»опция: при первом вызове cmFlex, проверьте, является ли defaults null.Если это так, вызовите метод Ajax для его заполнения и поместите функцию обратного вызова, которая выполняет функцию cmFlex.Проблема здесь в том, что если он вызывается снова до получения значений по умолчанию, вы будете выполнять повторный вызов на сервер.
  • Чистая и безопасная опция: поставить флаг вваш объект, что-то вроде isLoaded, и если пользователь вызывает cmFlex во второй раз, и этот флаг установлен на false, вызовите исключение или обработайте его, добавив этот вызов в очередь.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...