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 на стороне сервера

 PHP.SU

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


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

> Без описания
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 15:48:54
Post Id



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


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


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




Всем привет!
Есть такая строка:

table_name=csv_export&unique_key=&csv_column[]=1&db_column[]=artikul&csv_column[]=2&db_column[]=product_name&csv_column[]=3&db_column[]=price

Эта строка - результат работы метода jquery serialize()

Как же её привести всё в нужный вид?
Ну, типа, $csv_column = $_POST['csv_column'][0]

Неужели перебором foreach и разбором по средством explode() ?

В "поиске" ответа так и не нашёл.
Всё только умничают объясняя как работает метод serialize(), но ни одного ответа по обработке результата работы этого метода.

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

 
 Top
DelphinPRO
Отправлено: 14 Апреля, 2012 - 15:55:29
Post Id



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


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


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




если вы сериализуете форму, значит вы собрались каким-то образом отправить эти данные на сервер. либо аяксом (любым методом - GET POST) либо через url (GET)
CODE (javascript):
скопировать код в буфер обмена
  1. url = 'index.php?' + stroka;
  2. window.location = url;
На сервере все данные будут занесены в массив $_GET или $_POST соответственно

конкретно разбор csv_column - циклом.
но можно написать такие теги
CODE (html):
скопировать код в буфер обмена
  1. <input name="csv_column[1]" value="val_1" />
  2. <input name="csv_column[2]" value="val_2" />
тогда сериализованные данные будут в виде
CODE (text):
скопировать код в буфер обмена
  1. csv_column[1]=val_1&csv_column[2]=val_2
и обращаться на сервере можно будет по индексам
PHP:
скопировать код в буфер обмена
  1. echo $_POST['csv_column'][2]; // val_2

(Отредактировано автором: 14 Апреля, 2012 - 15:59:41)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Апреля, 2012 - 15:56:28
Post Id



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


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


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




То что сериализовано, не должно быть в гет или пост переменной,
это должно быть само гет-строкой после знака вопроса, тогда на сервере все будет уже в суперглобах.
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 15:57:50
Post Id



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


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


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




Я отправляю форму таким образом:
PHP:
скопировать код в буфер обмена
  1.  
  2. $.post('ajax_file.php', { data_form : $('#form).serialize(), }, function(data){ });
  3.  

(Отредактировано автором: 14 Апреля, 2012 - 15:58:46)

 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Апреля, 2012 - 16:00:57
Post Id



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


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


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




А надо таким:
CODE (javascript):
скопировать код в буфер обмена
  1. $.get('ajax_file.php?' + $('#form).serialize(), function(data){ });

(Добавление)
Я вот где-то себе обработчик писал свой для формы, чтобы не сериализовать её, а отправлять нормально объектом.
Что-то щас с ходу найти не могу.
 
 Top
DelphinPRO
Отправлено: 14 Апреля, 2012 - 16:06:36
Post Id



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


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


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




DeepVarvar пишет:
А надо таким:

а если textarea передается с большим текстом? у GET вроде ограничение есть на длину данных


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 16:07:59
Post Id



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


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


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




DeepVarvar, найди пожалуйста)
Запросы на запись в БД не хочется делать GET-oм.

DelphinPRO пишет:
а если textarea передается с большим текстом? у GET вроде ограничение есть на длину данных

Вот именно.

(Отредактировано автором: 14 Апреля, 2012 - 16:09:02)

 
 Top
DelphinPRO
Отправлено: 14 Апреля, 2012 - 16:11:51
Post Id



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


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


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




CODE (javascript):
скопировать код в буфер обмена
  1. $.post('ajax_file.php', $('#form').serializeArray(), function(data){ });
?

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



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 16:13:23
Post Id



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


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


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




Тогда ещё вопрос, что бы тему не создавать, спрошу тут:
как тоже самое на JS сделать:
PHP:
скопировать код в буфер обмена
  1.  
  2. foreach($array as $key => $val_array)
  3. {
  4.     $new_array[$val_array['name']][$key] = $val_array['value'];
  5. }
  6.  
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Апреля, 2012 - 16:22:33
Post Id



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


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


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




Я не учитывал в этом решении что name может быть разным:
CODE (javascript):
скопировать код в буфер обмена
  1. var arr = [{"name":"a"},{"name":"b"},{"name":"c"},{"name":"d"}];
  2. var newArr = {};
  3. newArr.name = [];
  4. for (var i in arr) {
  5.   newArr.name[i] = arr[i].name;
  6. }
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 16:25:44
Post Id



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


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


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




Спасибо DelphinPRO , всё работаетУлыбка
Я и не знал, что так можно Улыбка
Думал, только объектом надо {} Улыбка
 
 Top
DeepVarvar Супермодератор
Отправлено: 14 Апреля, 2012 - 16:27:38
Post Id



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


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


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




А вот это уже кажется то что надо:
CODE (javascript):
скопировать код в буфер обмена
  1. var arr = [{"name":"a","value":22},{"name":"b","value":0},{"name":"c","value":6},{"name":"d","value":3}];
  2.  
  3. var newArr = {};
  4. for (var i in arr) {
  5.   newArr[arr[i].name] = [];
  6.   newArr[arr[i].name][i] = arr[i].value;
  7.   }
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 16:28:41
Post Id



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


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


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




DeepVarvar пишет:
Я не учитывал в этом решении что name может быть разным:
CODE (javascript):
скопировать код в буфер обмена
  1. var arr = [{"name":"a"},{"name":"b"},{"name":"c"},{"name":"d"}];
  2. var newArr = {};
  3. newArr.name = [];
  4. for (var i in arr) {
  5.   newArr.name[i] = arr[i].name;
  6. }

Вот именно, что разное )

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


Но так одномерный массив получается.
И списков с одим именем несколько: т.е. массив.

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

 
 Top
DelphinPRO
Отправлено: 14 Апреля, 2012 - 16:34:21
Post Id



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


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


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




armancho7777777 пишет:
Думал, только объектом надо {}

в javascript граница между понятиями "массив" и "объект" довольно расплывчатая.
по сути объект - это ассоциативный массив.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
armancho7777777 Супермодератор
Отправлено: 14 Апреля, 2012 - 16:36:54
Post Id



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


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


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




DelphinPRO пишет:
в javascript граница между понятиями "массив" и "объект" довольно расплывчатая.
по сути объект - это ассоциативный массив.

Ну это я знаю)
Я имел ввиду ajax функцию $.post библиотеки jQuery)

CODE (javascript):
скопировать код в буфер обмена
  1. $.post('ajax_file.php', { data_form : $('#form).serialize() }, ....

(Отредактировано автором: 14 Апреля, 2012 - 16:38:42)

 
 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