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 :: Передача значения div id с помощью ajax в php

 PHP.SU

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


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

> Без описания
ElDarco
Отправлено: 27 Ноября, 2013 - 13:45:45
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2013  


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




Добрый день.
Вот такая проблема:

Есть такая вот структура
CODE (html):
скопировать код в буфер обмена
  1. <div id="map">
  2. <div id="map_row">
  3. <div id="map_cell">
  4. <div class="clet" id="id_2" data-num="1"></div>
  5. <div class="clet" id="id_3" data-num="2"></div>
  6. </div>
  7. <div id="map_cell">
  8. <div class="clet" id="id_4" data-num="3"></div>
  9. <div class="clet" id="id_5" data-num="4"></div>
  10. </div>
  11. </div>
  12. </div>
генерируемая циклом в пхп.

Есть фортендовый скрипт, который при нажатии на div, через ajax должен передать в пхп POST переменную
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2.  $('#map').click( function() {
  3.  
  4.             $.ajax({
  5.                 type: 'POST',
  6.                 url: 'dinquery.php?query=mapinfo',
  7.                 data: {
  8.                     'id' : $("div",this).data('num')
  9.                 }
  10.                 success: function(data) {
  11.                     $('.results').html(data);
  12.                 }
  13.             });
  14.  
  15.         });
  16.  


есть div для вывода
CODE (html):
скопировать код в буфер обмена
  1. <div class="results"></div>


пхп скрипт тоже пока сделал простым:

PHP:
скопировать код в буфер обмена
  1.  
  2. switch ($_GET['query']) {
  3.     case 'mapinfo':
  4.         echo $_POST['id'];
  5.         break;
  6. }
  7. ?>
  8.  



Только вот ничего не вышло.
Подскажите что делаю не так.
 
 Top
Deonis
Отправлено: 27 Ноября, 2013 - 14:17:50
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




1. По идее, у вас должна ошибка вылазить, т.к. между закрывающей фигурной скобкой и success не хватает запятой.
2. $("div",this).data('num') - у данного элемента нет атрибута data-*, т.к. это вы выбрали элемент с классом "map_row".

(Отредактировано автором: 27 Ноября, 2013 - 14:28:22)

 
 Top
ElDarco
Отправлено: 27 Ноября, 2013 - 14:36:50
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2013  


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




Спасибо за ответ.
1) Запятую вернул на место
2) $('#map_cell').click( function() {
Если я сделаю так тогда я получу атрибут же?

3) Поменял метод приемки...

Теперь что-то зашевелилось, но воспринимает onclick только первый div class="clet" и выдает NULL
.
Привожу полный текст js

CODE (javascript):
скопировать код в буфер обмена
  1.         $('#map_cell').click( function() {
  2.  
  3.             $.ajax({
  4.                 type: 'POST',
  5.                 url: 'dinquery.php',
  6.                 data: {
  7.                     'id' : $("div",this).data('num')
  8.                 },
  9.                 success: function(data) {
  10.                     $('.results').html(data);
  11.                 }
  12.             });
  13.  
  14.         });


Как быть в моей ситуации что бы все клетки отвечали на onclick
 
 Top
Deonis
Отправлено: 27 Ноября, 2013 - 14:39:29
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




Уточните - вам надо передавать параметр data-* того элемента, по которому был клик?
 
 Top
ElDarco
Отправлено: 27 Ноября, 2013 - 15:00:39
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2013  


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




Deonis пишет:
Уточните - вам надо передавать параметр data-* того элемента, по которому был клик?


Да. Надо передать параметр того div на который был клик

(Отредактировано автором: 27 Ноября, 2013 - 15:03:00)

 
 Top
IllusionMH
Отправлено: 27 Ноября, 2013 - 15:05:01
Post Id



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


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


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





<div id="map_cell"> 2 раза? Удачи получить не только первый элемент

(Добавление)
CODE (javascript):
скопировать код в буфер обмена
  1. $('#map').on('click', '.clet', function() {
  2.   console.log($(this).data('num'));
  3. });
 
 Top
Deonis
Отправлено: 27 Ноября, 2013 - 15:11:26
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




Вариант 1:
CODE (javascript):
скопировать код в буфер обмена
  1. $('#map').on('click', '.clet', function() {
  2.     $.ajax({
  3.         type: 'POST',
  4.         url: 'dinquery.php',
  5.         data: {
  6.             id : $(this).data('num')
  7.         },
  8.         success: function(data) {
  9.             $('.results').html(data);
  10.         }
  11.     });
  12. });

Вариант 2 (не есть гуд, но работать будет):
CODE (javascript):
скопировать код в буфер обмена
  1. $('#map').click(function(evt) {
  2.     $.ajax({
  3.         type: 'POST',
  4.         url: 'dinquery.php',
  5.         data: {
  6.             id : $(evt.target).data('num')
  7.         },
  8.         success: function(data) {
  9.             $('.results').html(data);
  10.         }
  11.     });
  12. });

P.S. По поводу третьего пункта в моем первом ответе - ошибся, просто мне бы в голову не пришло передавать в одном запросе и GET, и POST Однако , посему и не заметил сразу и удалить его не успел до того, как вы прочитали.

(Отредактировано автором: 27 Ноября, 2013 - 15:12:47)

 
 Top
ElDarco
Отправлено: 28 Ноября, 2013 - 10:04:08
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2013  


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




Первый скрипт почему-то не работает...
FireBug пишет ошибку.
Ругается на эту строку $('#map').on('click', '.clet', function() {
TypeError: $(...).on is not a function


Второй работает таки. Все ячейки начали реагировать. Но вот передается через POST по прежнему null. О чем мне свидетельствует firebug

(Отредактировано автором: 28 Ноября, 2013 - 10:19:33)

 
 Top
DelphinPRO
Отправлено: 28 Ноября, 2013 - 10:49:43
Post Id



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


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


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




ElDarco пишет:
TypeError: $(...).on is not a function

Обновите jquery


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
ElDarco
Отправлено: 28 Ноября, 2013 - 11:20:21
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2013  


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




DelphinPRO пишет:
ElDarco пишет:
TypeError: $(...).on is not a function

Обновите jquery


До самой последней версии?
 
 Top
Deonis
Отправлено: 28 Ноября, 2013 - 11:49:03
Post Id



Посетитель


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2009  


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




Вот вам примеры в действии. Если у вас работает не корректно, то найдите, как говориться, 10-ть отличий. В примерах не обращайте на путь и передаваемый параметр delay - это всё для имитации ajax-запроса. Обновите хотя бы до версии 1.7.+, если у вас какие-то плагины работают только со старыми библиотеками. Хотя, используя jQuery Migrate, не так уж сложно адаптировать и под новые версии.
 
 Top
ElDarco
Отправлено: 28 Ноября, 2013 - 13:07:42
Post Id


Новичок


Покинул форум
Сообщений всего: 22
Дата рег-ции: Нояб. 2013  


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




Оба варианта работают хорошо...
простите мою клиническую и неизлечимую тупость. проблема была в старой библиотеке Недовольство, огорчение

Огромное спасибо за помощь!
 
 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