繁体   English   中英

如何将数据从PHP动态传递到JavaScript(在动态创建的HTML元素中)

[英]How to dynamically pass data from PHP to JavaScript (In dynamically created HTML elements)

我有一个从数据库填充的实体数组,每个实体都有自己的GUID 我通过遍历实体数组并将它们放置在新的动态创建的div包装器中,将它们显示在网页(HTML)上

<?php

$images = elgg_extract('entities', $vars, FALSE);

foreach ($images as $image) {
    $img = elgg_view_entity_icon($image, 'small');
    $image_guid = $image -> getGUID();

    echo <<<HTML
    <div class="file-preview-frame">
        <div class="image-preview">{$img}</div>
        <button type="button" class="btn-default" data-guid={$image_guid}></button>
    </div>
    HTML;
}

elgg_require_js('js/inline_image_view');

inline_image_view.js

require(['elgg/Ajax'], Ajax => {

    var ajax = new Ajax();

    $('.btn-default').click(function(event) {
        var button = $(event.relatedTarget) // Button that triggered the modal
        var recipient = button.data('guid') // Extract info from data-* attributes

        ajax.view('albums/inline_full_image_view', {
            data: {
                guid: recipient // querystring
            },
        }).then(body => {
            $( '.full-image-view' ).html(body);
        })
    });
});

如何在RequireJS的inline_image_view.js中将每个按钮单击与特定图像的GUID相关联? 最好的或首选的方法是什么?

谢谢大家?

感谢Elgg社区 ,尤其是Ismayil Khayredinov

专辑/list.php

<?php
$images = elgg_extract('entities', $vars);
echo elgg_view_entity_list($images, [
   'item_view' => 'albums/item_view',
   'no_results' => 'No images to show',
]);
?>
<div class="file-full-view-frame"></div>

专辑/item_view.php

<?php
$image = elgg_extract('entity', $vars);
elgg_require_js('albums/item_view');

$img = elgg_view_entity_icon($image, 'small'); 
?>
<div class="file-preview-frame">
   <div class="image-preview"><?= $img ?></div>
   <?php
   echo elgg_view('input/button', [
      'class' => 'btn-default file-preview-show-full',
      'data-guid' => $image->guid,
   ], 'Show full'); 
   ?>
   </div>

</div>

专辑/item_view.js

​define(function(require) {
  var Ajax = require('elgg/Ajax');
  var ajax = new Ajax();

  $(document).on('click', '.file-preview-show-full', function(e) {
     e.preventDefault();
     var $elem = $(this);
     var guid = $elem.data('guid');

     ajax.view('albums/inline_full_image-view', {
         //data: $elem.data(),
         data: {guid: guid}
     })
.done(function (output, statusText, jqXHR) {
        if (jqXHR.AjaxData.status == -1) {
            elgg.register_error('Unable to load full image view');
            return;
        }
        $('.file-full-view-frame').html(output);
    });
  });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM