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 :: Обработка AJAX на стороне сервера [2]

 PHP.SU

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


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

> Без описания
DeepVarvar Супермодератор
Отправлено: 14 Апреля, 2012 - 16:40:57
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




А вот то что надо было найти, ищет все формы у которых class="dynamic", и работает с ними:
CODE (javascript):
скопировать код в буфер обмена
  1. $("form.dynamic").submit(function(){
  2.  
  3.   f = $(this), rqd = {}, elements = f.find("input, textarea, select");
  4.  
  5.   elements.each(function() {
  6.  
  7.     if ($(this).is(":checkbox") && $(this).is(":checked")) {
  8.  
  9.       // если это чекбокс и он выбран, запишем его на отправку
  10.       rqd[$(this).attr("name")] = 1;
  11.  
  12.     }  else {
  13.  
  14.       // в остальных случаях
  15.       rqd[$(this).attr("name")] = $(this).val();
  16.  
  17.       // кастомный атрибут элемента: after="clean"
  18.       // очищать ли значение после отправки
  19.       if ($(this).attr("after") == "clean") {
  20.         $(this).val("");
  21.       }
  22.  
  23.     }
  24.  
  25.   });
  26.  
  27.   // отправляем что насобирали
  28.   $.post(f.attr("action"), rqd, function(m) {
  29.     alert("server says to vy callback:" + m);
  30.   });
  31.  
  32.   // а браузеру показали шиш
  33.   return false;
  34.  
  35. });
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 17:02:42
Post Id



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


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


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




И тебе спасибо DeepVarvar!)
Я тоже так сделать хотел, но не знал как многомерный массив сформировать тем же спосабом, что выше одномерный.
И потому и задал вопрос выше по формированию массива.
Это не работает:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var form_data = {};
  3.  
  4. $('#form').find('input:text, select').each(function() {
  5.  
  6.        form_data[this.name][index] = this.value;
  7.  
  8. });
  9.  


index == undefined

.

(Отредактировано автором: 14 Апреля, 2012 - 17:12:52)

 
 Top
Panoptik
Отправлено: 14 Апреля, 2012 - 17:14:59
Post Id



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


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


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




сериализованные данные в пхп можно удобно принять и разибить с помощью ф-ции parse_str
http://php.net/manual/ru/function.parse-str.php
CODE (javascript):
скопировать код в буфер обмена
  1. $.post('ajax_file.php', { data_form : $('#form).serialize(), }, function(data){ });

PHP:
скопировать код в буфер обмена
  1. parse_str($_POST['data_form'],$data);
  2. //$data - теперь массив содержащий ключи - имена элементов формы и значения соответсвующие


-----
Just do it
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 17:24:22
Post Id



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


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


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




Спасибо Panoptik! Улыбка
Не знал Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Апреля, 2012 - 18:00:55
Post Id



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


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


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




armancho7777777 пишет:
И тебе спасибо DeepVarvar!)
Я тоже так сделать хотел
А мне нужен был именно такой кастомный обработчик форм потому,
что у меня еще и "Loading..." показывался во время отправки, и вместо алерта, сообщение в блоке с разной расцветкой в зависимости от статуса ответа сервера (красный, зеленый, синий).
Я его из примера просто выпилил и оставил саму суть сбора значений.
 
 Top
tuareg
Отправлено: 14 Апреля, 2012 - 23:27:54
Post Id


Участник


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


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




armancho7777777 пишет:

Это не работает:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var form_data = {};
  3. $('#form').find('input:text, select').each(function() {
  4.        form_data[this.name][index] = this.value;
  5. });
  6.  

index == undefined
.

Ну так-то логично, что это не работает, где переменная index?
CODE (text):
скопировать код в буфер обмена
  1.  
  2. .each(callback(index, domElement))// из док-и
  3.  

Тогда Ваш пример
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var form_data = {};
  3. $('#form').find('input:text, select').each(function(i) {
  4.        form_data[this.name][i] = this.value;
  5. });
  6.  

(Отредактировано автором: 14 Апреля, 2012 - 23:30:56)

 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Апреля, 2012 - 02:51:51
Post Id



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


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


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




Блин, точнее, именно на такой пример и выдаёт ошибку:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var form_data = {};
  3.  
  4. $('#form').find('input:text, select').each(function(index, element) {
  5.                                                
  6.      form_data[this.name][index] = this.value;
  7.                                                    
  8. });
  9.  

C недосыпу вчера недописал пример.
Почему такая хрень?

(Отредактировано автором: 15 Апреля, 2012 - 02:56:39)

 
 Top
tuareg
Отправлено: 15 Апреля, 2012 - 09:22:02
Post Id


Участник


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


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




Ну значит так
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. var form_data = {};
  3. $('#form').find('input:text, select').each(function(index, element) {
  4.      form_data[this.name]=[];                                          
  5.      form_data[this.name][index] = this.value;
  6.                                                    
  7. });
  8.  

Нельзя в js делать ассоциативные массивы как в PHP. Вот он и ругается. Подмигивание

(Отредактировано автором: 15 Апреля, 2012 - 09:23:40)

 
 Top
armancho7777777 Супермодератор
Отправлено: 15 Апреля, 2012 - 09:23:51
Post Id



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


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


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




tuareg пишет:
Ну значит так

Вот примерно так и представлял Улыбка

tuareg пишет:
Нельзя в js делать ассоциативные массивы как в PHP. Вот он и ругается.
Просто в index значение же числовое, я и подумал, что можно Однако

(Отредактировано автором: 15 Апреля, 2012 - 09:25:35)

 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB