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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: jquery переменное количество параметров метода

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: как?
DlTA
Отправлено: 10 Марта, 2015 - 15:29:13
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




как в методе jquery.get
умудрились сделать что
можно делать вызов
$.get(url, callback) и
$.get(url, data)
и $.get(url, data, callback)

только если поменять местами
$.get(url, callback, data) не работает
 
 Top
esterio
Отправлено: 10 Марта, 2015 - 15:41:56
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




примерно так
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.  

(Отредактировано автором: 10 Марта, 2015 - 15:46:35)

 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 16:09:00
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




а с jquery можно будет обойтись без самописного костыля?
 
 Top
esterio
Отправлено: 10 Марта, 2015 - 16:18:45
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




DlTA
в данном случае это не костиль. так работает сам JS. В функцию можно передать любое количество аргументов, даже меньше чем описано в отличии от PHP. И так работает сам JQ. Поищите в исходниках и сами увидите
 
 Top
DlTA
Отправлено: 10 Марта, 2015 - 16:20:30
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


Помог: 53 раз(а)




esterio пишет:
в данном случае это не костиль. так работает сам JS. В функцию можно передать любое количество аргументов, даже меньше чем описано в отличии от PHP. И так работает сам JQ. Поищите в исходниках и сами увидите

вопрос не в том что там так написано, а в том есть ли в jquery метод для валидации и сортировки списка параметров

(Отредактировано автором: 10 Марта, 2015 - 16:20:49)

 
 Top
esterio
Отправлено: 10 Марта, 2015 - 16:39:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




если чесно такого не припомню. тут нужно гуглить. только вот зачем не знаю. если можно самому написать быстро
 
 Top
IllusionMH
Отправлено: 10 Марта, 2015 - 20:07:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




DlTA, data - объект, callback - функция. Если второй параметр - функция, значит data пропустили.
https://github[dot]com/jquery/jquery[dot][dot][dot]src/ajax[dot]js#L789
Если менять местами, тогда dataType вполне может получить объект вместо ожидаемого типа ответа.

Опциональность параметров не означает возможность их перестановки.

(Отредактировано автором: 10 Марта, 2015 - 20:10:58)

 
 Top
tuareg
Отправлено: 11 Марта, 2015 - 12:18:48
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




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.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB