Anadi
@Anadi
Если ответ Вам помог мой, решением отметье его!

Как передать в Ajax запросе массив текущего элемента сформированного методом PhpToJSObject?

Привет знатоки!
Кто подскажет как передать массив текущего элемента в Ajax запросе. Можно сделать проще и запихать скрипт в цикл foreach, но хочется ограничиться скриптом за пределами цикла. Пробовал также запихать этот массив в скрытый инпут с присвоением id="item_<?= $arItem["ID"]; ?>", и получать его скажем так:
var ID = $(this).attr('id'); // Берется из id кликнутого элемента
var ITEM = $('#item_' + ID); // Собственно сам скрытый инпут с подстановкой полученного id

По идее все (правильно). Но почему то сформированный массив игнорирует то, что инпут скрытый и выводится на странице. В данный момент сделал следующее:
Преобразуем PHP массив в JS
$rsItemJS = array(
            "ID" => $arItem["ID"],
            "NAME" => $arItem["NAME"],
            "PROPERTIES" => $arItem["PROPERTIES"]
        );

        $arItemJS = CUtil::PhpToJSObject($rsItemJS);

Далее в JS скрипте надо передать этот массив! Элементов может быть много, как передать именно тот, на который был сделан клик?
$(document).ready(function ($) {
        $('.item').on('click', function () {

            var ITEM = <?= $arItemJS ?>;
            var AjaxSelectItem = {ITEM: ITEM};

            ajaxrequest('/include/popup.modal.php', AjaxSelectItem , ' .modal-body');

            return false;
        });
    });

Собственно сам файл script.js в котором лежит функция ajaxrequest
function ajaxrequest(url, param, content) {
    $.ajax({
        type: "POST",
        url: url,
        data: param,
        success: function (response) {
            $(content).html(response);
        }
    });
}

У кого какие идеи? Куда мне копать надо, кто задаст мне верный вектор для решения?
  • Вопрос задан
  • 1268 просмотров
Решения вопроса 1
villiwalla
@villiwalla
HTML-верстка
Выводишь элементы на фронт:
...
<div class="item" data-id="<?= $arItem['ID'] ?>" > тут всякое </div>
...


Потом вещаешь событие:
$('.item').click(function() {
 ajaxrequest('/include/popup.modal.php',  {item_id: $(this).data('id')} , ' .modal-body');
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы