如何将 Ajax 响应显示为模式弹出窗口

Posted

技术标签:

【中文标题】如何将 Ajax 响应显示为模式弹出窗口【英文标题】:How to show Ajax response as modal popup 【发布时间】:2016-10-26 17:11:07 【问题描述】:

我有一个链接点击它正在发送ajax请求并成功获得响应,这是html文件,我附加到div,但我需要将div显示为modal popup,我试过了下面的东西。

html 文件中

<a th:if="$ratingSummary" href="#"  class="small dark account review_ratings_login">Login to write a review</a> 

<div id="login_for_review" data-toggle="modal" data-target="#reviewLoginModal"></div>

js 文件中

$(document).on('click', '.review_ratings_login', function () 
        var $data = $('#review_product_id span').text();
         var url = '/mycompany/login/'+$data;
        $.ajax(
            type: 'GET',
            url: url,
            success: function (output) 
            $('#login_for_review').html(output).modal('show');// I tried to show this response as modal popup
            ,
            error: function(output)
            alert("fail");
            
        );
    );

output文件

<div  class="centerForm modal fade" role="dialog" style="margin-left: 35%;" id="reviewLoginModal">

      <div class="modal-dialog modal-sm" >
       <div class="modal-content">
          // here I have login form
    </div>
  </div>

但我没有得到这个html output modal pup 而是得到black screen 任何人都可以帮助我如何做到这一点?

【问题讨论】:

【参考方案1】:

我通过创建模态并删除 data-toggledata-target 并将响应附加到 modal div 解决了这个问题

模态 div 代码

<div id="login_for_review" class="modal hide"  role="dialog">

</div>

超链接代码

 <a th:if="$ratingSummary" href="#"  class="small dark account review_ratings_login">Login to write a review</a>

ajax 调用代码

$(document).on('click', '.review_ratings_login', function () 
        var $data = $('#review_product_id span').text();
         var url = '/mycompany/login/'+$data;
        $.ajax(
            type: 'GET',
            url: url,
            success: function (output) 
            $('#login_for_review').html(output).modal('show');//now its working
            ,
            error: function(output)
            alert("fail");
            
        );
    );

【讨论】:

【参考方案2】:

在 Bootsrap 模态弹出窗口中,您可以使用简单的方式显示不需要预定义模态 div 容器的模态。见modal

例如

 $.ajax(
                url: "url",
                type: 'POST',
                dataType: "html",
                data:id:params,
                success: function(data, status, xhr) 
                    if(data=="")
                        window.location.href="/";
                    
                    else
                        BootstrapDialog.show(
                            title: "Modal Tital",
                            message: function(dialogRef)
                                $mydata = $($.parseHTML(data));
                                return $mydata;
                            ,
                            onshow: function(dialog)

                        // and css change if need, eg. 
                         dialog.$modalHeader.css("float","none");

                            ,
                            onshown:function(dialog)
                            
                               // event after shown

                            ,
                            onhide:function(dailog)
                            
                               // event on hide
                            
                        );
                    

                ,
                statusCode: 
                    401: function () 
                        alert("Your session has been expired");

                    
                
            );

【讨论】:

同意谢谢你的回复,但我用不同的方法解决了我的问题,请检查我的答案 这似乎是 2016 年最好和最现代的解决方案,奇怪的是我是第一个支持它的人

以上是关于如何将 Ajax 响应显示为模式弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 忘记密码的模式弹出窗口显示 500 内部服务器错误,同时运行 ajax 功能

UIPopoverPresentationController 始终显示全屏模式弹出窗口

c#,如何弹出一个显示在最前面但没有焦点的窗口?谢谢!

magnific popup:以编程方式将内容从弹出表单更改为模态微调器,然后返回表单

ajax 返回后未初始化其他 jQuery 弹出窗口

如何在按钮单击时将部分视图呈现为模式弹出窗口?