Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: jquery переменное количество параметров метода
Форумы портала PHP.SU » Клиентская разработка » JavaScript & VBScript » jquery переменное количество параметров метода

Страниц (1): [1]
 

1. DlTA - 10 Марта, 2015 - 15:29:13 - перейти к сообщению
как в методе jquery.get
умудрились сделать что
можно делать вызов
$.get(url, callback) и
$.get(url, data)
и $.get(url, data, callback)

только если поменять местами
$.get(url, callback, data) не работает
2. esterio - 10 Марта, 2015 - 15:41:56 - перейти к сообщению
примерно так
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function Foo(url, data, callback) {
  3.     if(arguments.length != 3) {
  4.         if(typeof data == 'function') {
  5.             callback = data;
  6.             data = undefined;
  7.         }
  8.     }
  9.  
  10.     alert(url + " " + data + " " + callback)
  11. }
  12.  
  13. Foo("/test", {a: 1});
  14. Foo("/test", "a=1");
  15. Foo("/test", function(){});
  16. Foo("/test", {a: 1}, function(){});
  17.  
3. DlTA - 10 Марта, 2015 - 16:09:00 - перейти к сообщению
а с jquery можно будет обойтись без самописного костыля?
4. esterio - 10 Марта, 2015 - 16:18:45 - перейти к сообщению
DlTA
в данном случае это не костиль. так работает сам JS. В функцию можно передать любое количество аргументов, даже меньше чем описано в отличии от PHP. И так работает сам JQ. Поищите в исходниках и сами увидите
5. DlTA - 10 Марта, 2015 - 16:20:30 - перейти к сообщению
esterio пишет:
в данном случае это не костиль. так работает сам JS. В функцию можно передать любое количество аргументов, даже меньше чем описано в отличии от PHP. И так работает сам JQ. Поищите в исходниках и сами увидите

вопрос не в том что там так написано, а в том есть ли в jquery метод для валидации и сортировки списка параметров
6. esterio - 10 Марта, 2015 - 16:39:39 - перейти к сообщению
если чесно такого не припомню. тут нужно гуглить. только вот зачем не знаю. если можно самому написать быстро
7. IllusionMH - 10 Марта, 2015 - 20:07:31 - перейти к сообщению
DlTA, data - объект, callback - функция. Если второй параметр - функция, значит data пропустили.
https://github[dot]com/jquery/jquery[dot][dot][dot]src/ajax[dot]js#L789
Если менять местами, тогда dataType вполне может получить объект вместо ожидаемого типа ответа.

Опциональность параметров не означает возможность их перестановки.
8. tuareg - 11 Марта, 2015 - 12:18:48 - перейти к сообщению
DlTA пишет:
а в том есть ли в jquery метод для валидации и сортировки списка параметров

Метода нет, но элементарно пишется.
Вот откуда-то "стыренный" вариант. Логирование, времени срабатывания события, но не суть )) По образу и подобию можно и проверить правильность параметров.
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. (function() {
  3.     if (
  4.         !window.console ||
  5.         !console.log
  6.     ) return;
  7.  
  8.     var eventList = [
  9.         /* Список интересующих событий */
  10.     ];
  11.  
  12.     $.event.triggerOriginal = $.event.trigger;
  13.     $.event.trigger = function(event, data, elem, onlyHandlers) {
  14.         function callback() {
  15.             $.event.triggerOriginal(event, data, elem, onlyHandlers);
  16.         };
  17.         if ( $.isWindow(elem) && $.inArray(event, eventList) ) {
  18.             var start = new Date;
  19.             callback();
  20.             console.log( "Event " + event + ": ", (new Date - start) + 'ms' );
  21.         } else callback();
  22.     };
  23.  
  24. })();
  25.  

 

Powered by ExBB FM 1.0 RC1