Ajax - help

X
На сайте с 04.12.2018
Offline
280
278

На сайте есть блок, который выводится с помощью ajax

В коде страницы такой див:

<div id="submenu"></div>

Внизу такой скрипт:

<script type="text/javascript">

$(function(){
	$.ajax({
		url: "/inf.php",
		dataType: "json",
		success:function(data){
			$("#submenu").html(data.submenu);
		}
	});
});
		
</script>

Соответственно этот самый inf.php заходит в базу, вытаскивает актуальный блок информации и возвращает ее назад в див.

Встала задача вставить несколько таких блоков и выводить в каждый разную информацию. Соответственно, вижу что многие делают примерно так: 

<div id="submenu" data-num="123456"></div>

Помогите, как мне передать это значение из "data-num" в  inf.php и как в нем его поймать?

Понимаю, что нужно как то скорректировать <script>, чтоб выловить этот параметр и передать так, чтобы GETом выловить на скрипте, но сколько ни пыжился, не получается.


Удобный съем позиций (http://allpositions.ru/redirect/58277)
I7
На сайте с 12.06.2008
Offline
362
#1
  1. id каждого div должен быть уникальным, Вы не можете сделать множество div с одним id.
  2. Чтобы получить значение data-num, можно использовать функцию jquery - attr или data. Передать в inf.php обычным способом как переменная запроса (?id=...).
  3. Лучше всего задать каждому div некий класс, затем в цикле пройти все div с этим классом (с помощью each) и каждый div заполнить.
C
На сайте с 04.02.2005
Offline
277
#2
div class="submenu"></div>



<script type="text/javascript">

$(function(){
        
        $.ajax({
                url: "/inf.php",
                dataType: "json",
                success:function(data){
                        $(".submenu").each(function(index){$(this).html(data.index));
                }
        });
});
                
</script>
не проверял
W1
На сайте с 22.01.2021
Offline
304
#3
Xubart :
как мне передать это значение из "data-num" в  inf.php и как в нем его поймать?

Тут возможно несколько вариантов. Например, захардкодить эти значения в файле inf.php , как выше  Chukcha предложил. Или передать их в запросе массивом параметров, или просто json-строкой. А на стороне сервера извлечь соответствующие параметры или раскодировать json-строку.

Мой форум - https://webinfo.guru –Там я всегда на связи
I7
На сайте с 12.06.2008
Offline
362
#4
webinfo #:
А на стороне сервера извлечь соответствующие параметры или раскодировать json-строку.

А смысл? Самый элементарный вариант - 

url: "/inf.php?num="+$('#submenu').attr('data-num')

Либо делать так:

$(".submenu").each(function(index){    
	$.ajax({
                url: "/inf.php?num="+$(this).attr('data-num'),
                dataType: "json",
                success:function(data){
                        $(this).html(data)
                }
        });
});
W1
На сайте с 22.01.2021
Offline
304
#5
Ilya74 #:
А смысл?

Смысл - чтобы не делать 100500 запросов на сервер.
А так-то да, я же написал, что варианты разные могут быть.

C
На сайте с 04.02.2005
Offline
277
#6
смысл, чтоб не спамить самого же себя
Встречал такие конструкции.. сервер выпадал в 503

можно собрать объект по data_num - и отправить запрос всего массива, а затем его же и разпарсить

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий