Извлечь данные из массива при выборе радиокнопки

612
24 ноября 2016, 10:32

Есть массив:

$arr = [
   ['id'=>101, 'note'=>'Содержание_1'],
   ['id'=>108, 'note'=>'Содержание_2'],
   ['id'=>258, 'note'=>'Содержание_3']
];

На странице php генерируются радиокнопки значение которых равно элементу 'id' из массива $arr.

Вот примерный код:

<!DOCTYPE html> 
<html lang="en"> 
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery-1.7.2.min.js"></script>
<script>
$(function(){
    $('.id').click(function(){
        $('.note').html($(this).val());
    });
});
</script>
</head>
<body>
<?php
$arr = array(
    array('id'=>101, 'note'=>'Содержание_1'),
    array('id'=>108, 'note'=>'Содержание_2'),
    array('id'=>258, 'note'=>'Содержание_3')
);
?>
<input class="id" name="id" type="radio" value="<?=$arr[0]['id']?>" />punkt 1
<input class="id" name="id" type="radio" value="<?=$arr[1]['id']?>" />punkt 2
<input class="id" name="id" type="radio" value="<?=$arr[2]['id']?>" />punkt 3
<div class="note"></div>
</body>
</html>

Сейчас у меня при выборе радиокнопки в div class="note" попадает значение 'id'.

Можно ли с помощью javascript извлечь значение 'note' из массива $arr, у которого 'id' равно значению выбранной радиокнопки и вывести в div class="note"

Answer 1

Можно сделать таким образом, но все данные будут видны в DOM'e

<input class="id" name="id" type="radio" value="<?=$arr[0]['id']?>" 
      data-array="<?=$arr[0]['note']?>"/>punkt 1
<script>
$(function(){
    $('.id').click(function(){
        $('.note').html($(this).attr('data-array'));
    });
});
</script>
Answer 2

Вы не сможете извлечь данные из php-массива по той простой причине, что этот массив существует только в момент исполнения php-скрипта. Как только скрипт отработал и отдал отрендеренную страницу веб-серверу для передачи клиентскому браузеру - массив исчезает. (не будем сейчас рассматривать кеширования и сессии, так как по сути те-же яйца, только в профиль)

Решений тут ровно два:

  1. Отдавать эти данные на клиент. Либо как атрибуты DOM, либо как массив JS.
  2. При выборе радиокнопки делать запрос к бэкенду.
Answer 3

А в чем проблема при получении id сделать вызов php скрипта через ajax, передать в запросе id и получить соответствующее значение note?

В данном случае я вижу только такое решение, при условии, что вы не хотите выводить значение note на страницу.

Другое решение предложил @lyhoshva - использовать data-class, также возможно выводить значение note в input type="hidden"

READ ALSO
Прокомментируйте код построчно

Прокомментируйте код построчно

Здравствуйте, прошу помочь разобраться и понять следующий примерЯ нуждаюсь в объяснении данного кода, желательно прокомментировать построчно

406
Как отправить на websocket сообщение из node js?

Как отправить на websocket сообщение из node js?

В моем приложении node js понадобилась отправка сообщений на websocketЯ решил что надо написать клиента websocket серверу

548
При нажатии на кнопку открываются все модальные окна сразу (

При нажатии на кнопку открываются все модальные окна сразу (

Вот код, генерируем строки, в строках по 4 ячейки в последней ячейке кнопка с с вызовом модального окна, вот когда на нее нажимаешь открываются...

558
React - биндинг и ключи

React - биндинг и ключи

Есть два терзающий вопроса:

535