【问题标题】:Get MySQL data inside jQuery UI Dialog在 jQuery UI 对话框中获取 MySQL 数据
【发布时间】:2014-03-02 11:16:25
【问题描述】:

我有用户列表,我想在 jQuery UI 弹出窗口中打开每个用户详细信息。我编写了整个代码,但我很困惑如何将每个用户 ID 传递给对话框。下面是我的代码,

HTML

<div id="dialog" title="User Detail">
  <p><?php $userID = $_GET[userID]; ?></p>
</div>

<a id="opener" href="#?userID=1">User 1</a>
<a id="opener" href="#?userID=2">User 2</a>

jQuery

jQuery.noConflict();
jQuery(document).ready(function(){
    jQuery("#dialog").dialog({
        modal: true,
        autoOpen: false,
        resizable: false
    });
    jQuery( "#opener" ).click(function() {
    jQuery( "#dialog" ).dialog( "open" );
  });
});

【问题讨论】:

    标签: php jquery jquery-ui jquery-ui-dialog


    【解决方案1】:

    首先,开始 ID 必须是唯一的,所以我将您的开启者 ID 更改为一个类。

    那么你可能想看看这个:

    jQuery.noConflict();
    jQuery(document).ready(function(){
        jQuery("#dialog").dialog({
            modal: true,
            autoOpen: false,
            resizable: false
        });
        jQuery( ".opener" ).click(function() {
            jQuery("#dialog p").text(jQuery(this).attr("href").substring(jQuery(this).attr("href").indexOf('=') +1));
        jQuery( "#dialog" ).dialog( "open" );
      });
    });
    

    简而言之,您构建对话框,然后显示它。

    还有工作的Fiddle

    【讨论】:

    • 它显示对话框内的可点击数据。我只想传递用户 ID。 text(jQuery(this).text() 这显示了我点击的实际文本
    • 当我点击用户 1 时,它应该在对话框中简单地传递 1
    【解决方案2】:

    首先,您不能为 DOM 元素重复使用 ID,因此您使用的选择器仅适用于 id="opener" 的链接的第一个实例。

    当您打开对话框时,jQuery 只是在当前页面上显示一个已经存在的元素,而不是向该页面或新页面发出请求。 $_GET 是服务器端的超级全局,只有在页面加载时才会显示。

    你需要做的是:

    1. 使用“opener”作为类而不是 id
    2. 覆盖对话框的打开状态
    3. 接受附加参数的函数将该参数附加到 您的对话框标记

    您可以使用以下代码从 href 属性中获取用户 ID 来完成此操作:

    HTML:

    <div id="dialog" title="User Detail">
      <p></p>
    </div>
    
    <a class="opener" href="#?userID=1">User 1</a>
    <a class="opener" href="#?userID=2">User 2</a>
    

    Javascript:

    jQuery.noConflict();
    jQuery(document).ready(function(){
        jQuery("#dialog").dialog({
            modal: true,
            autoOpen: false,
            resizable: false,
            open: function (event, ui) {
              var id = $(this).data('id');
              $('#dialog p').text(id);
            }
        });
        jQuery( ".opener" ).click(function(event) {
            event.preventDefault();
            var id = $(this).attr('href').split('=')[1]; // grab id
            jQuery( "#dialog" ).data('id', id).dialog( "open" );
        });
    });
    

    生成每个链接的 PHP 如下所示:

    $users = array(
      array(
        'id' => 1,
        'name' => 'User 1',
      ),
      array(
        'id' => 2,
        'name' => 'User 2',
      )
    );
    
    foreach ($users as $user) {
      print "<a class=\"opener\" href=\"#?userID=$user[id]\">$user[name]</a>";
    }
    

    *注意我对最后一个很懒,并在打印的字符串中转义了引号

    【讨论】:

    • 我将如何在这里传递 ID var id = $(this).attr('href').split('=')[1];?我需要把这个 jquery 放在我的 php 循环中,所以对于每条记录我都有单独的用户 ID
    • 我已经更新了我的帖子以包含一个代码示例,用于在 php 中为每个用户生成链接。
    • 抱歉,我想你没听懂我的问题。我知道如何使用他们的 ID 生成用户链接。我想知道如何在split('=')[1]; // grab id 这一行中获取用户 ID,因为您对 1 进行硬编码以进行测试
    • 该行代码从您单击的链接中获取 href 属性(例如:“#?userId=1”),并使用“=”作为分隔符将该值拆分为数组 ["#? userId", "1"] 并获取该数组的第二个值,即用户 ID。该 ID 必须已存在于您生成的链接中。当你调用 $('#dialog').data('id', id).dialog('open');将该变量传递给对话框打开方法,然后将该变量附加到对话框窗口中。如果这没有意义,那么我不确定你在问什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    相关资源
    最近更新 更多