【问题标题】:Return Ajax Link in modal pop-up window在模态弹出窗口中返回 Ajax 链接
【发布时间】:2012-03-28 10:05:12
【问题描述】:

我正在使用下面的脚本代码根据用户单击按钮时的按钮 ID 从我的数据库中获取结果。数据库结果以我正在测试的输出形式 alert(msg) 正常返回。有人可以帮助我如何在模式窗口中返回结果吗?我正在为使用bootstrap-modal.js 的应用程序使用引导程序,但我不知道如何集成这两个脚本。

<script type="text/javascript">
   $(document).ready(function() {
     $(function() {
       $('.ajax-link').click( function() {
        $.get( $(this).attr('href'), function(msg) {
          alert(msg);
        });
        return false; // don't follow the link!
      });
    });
  });
</script>

引导模式调用示例:

<script>
  $(function() {
    $('#userGuide').modal({
    backdrop: true;
  });
});
</script>

更新:这是页面上的代码,我试图根据单击的按钮的 ID 使用 $.get 返回用户#userGuide:

    <?php

    //MySQL Database Connect
    require 'config.php';

    $id = $_GET["id"];
    $stmt = $dbh->prepare('CALL sp_get_recipe_items(:id)');
    $stmt->bindParam(':id',$id,PDO::PARAM_INT,4000);
    $res = $stmt->execute();

    if ($res){
        while( $row = $stmt->fetchObject() ){
            echo "<div id='userGuide' class='modal hide fade'><div class='modal-body'>".$row->Ingredient."&nbsp;".$row->Quantity."&nbsp;".$row->UoM."&nbsp;</div></div>";
            }

    }else{
    $arr = $sth->errorInfo();
    echo "Execution failed with MYSQL: " . $arr[0] . "\n";
    die();
    }                      

?>

【问题讨论】:

    标签: jquery ajax modal-dialog twitter-bootstrap


    【解决方案1】:

    试试

    $(document).ready(function() {
        $('.ajax-link').click(function(event) {
            $('#container').load($(this).attr('href'), function() {
                $('#container').modal({
                    backdrop: true
                });
            });
            event.preventDefault();
        });
    });​
    

    这里使用.load()方法将内容加载到container元素中,所以需要在页面上添加一个新元素:

    <div id="container" style="display:none"></div>
    

    然后使用回调显示使用容器的对话框 (.modal())。当您返回多个 &lt;div&gt;s 时,您需要在创建对话框之前将它们添加到容器中。

    还将event 参数添加到click 回调函数中,并使用preventDefault() 代替return false

    注意

    $(document).ready(function() {
    

    $(function() {
    

    做同样的事情 - the second is short hand for the first.

    更新

    如果您查看模态窗口的文档,您会看到标记需要是

    <div class="modal" id="myModal">
      <div class="modal-body">
       <div>Butter & nbsp; 45 & nbsp; grams & nbsp;</div>
       <div>Flour & nbsp; 12 & nbsp; grams & nbsp;</div>
      </div>
    </div>
    

    然后你使用$('#myModal').modal(options) 来显示窗口......

    所以我建议你试试这个,首先编辑你的 PHP 循环:

    echo "<div class='modal-body'>";
    while( $row = $stmt->fetchObject() ){
       echo "<div>".$row->Ingredient."&nbsp;".$row->Quantity."&nbsp;".$row->UoM."&nbsp;</div>";
    }
    echo "</div>";
    

    这将创建窗口的主体......然后你的页面上已经有这个:

    <div id="modal-container" class="modal"></div>
    

    最后是你的 JavaScript:

    $(document).ready(function() {
        $('.ajax-link').click(function(event) {
            $('#modal-container').load($(this).attr('href'), function() {
                $('#modal-container').modal({
                    backdrop: true
                });
            });
            event.preventDefault();
        });
    });​
    

    那么您不会复制任何ids 并将内容加载到已经存在的容器中。

    【讨论】:

    • 嗨 ManseUK 感谢您的回复。这似乎对我不起作用。我已经更新了问题的更多细节,这可能有助于更好地澄清我的问题
    • 嗨@ManseUK 我想它快到了,模态变暗的模态屏幕出现了,但结果仍然缺失。我在 firebug 中的回复是 在我包含插件所需的模态隐藏和正文类之后。我已经更新了上面的代码,非常感谢任何进一步的帮助。
    • @php_d 好的,一个问题是您有多个相同的ids - 这是一个问题 - ids 应该是唯一的 - 我将更新我的答案,并提供有关如何使用的建议这可以工作
    • 再次感谢您的更新,抱歉一直打扰您!该代码似乎仍然不适用于容器。它只是再次返回没有正文的变暗屏幕。
    • 非常感谢您的帮助(和耐心)!现在效果很好,我只需要清理样式。我也明白我做错了什么,非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-12
    • 2011-10-13
    相关资源
    最近更新 更多