在ajax请求后加载facebox模式窗口

时间:2011-12-01 00:50:15

标签: php ajax codeigniter modal-dialog facebox

这是我在html页面的head标签中加载facebox插件的内容:

<!-- This is for the facebox plugin to work -->
<link href="<?php echo base_url();?>styles/facebox/src/facebox.css" media="screen" rel="stylesheet" type="text/css" />
<script src="<?php echo base_url();?>styles/facebox/lib/jquery.js" type="text/javascript">  </script>
<script src="<?php echo base_url();?>styles/facebox/src/facebox.js" type="text/javascript"></script>
<script type="text/javascript">
    jQuery(document).ready(function($) {
        $('a[rel*=facebox]').facebox({
            loadingImage : "<?php echo base_url();?>styles/facebox/src/loading.gif",
            closeImage   : "<?php echo base_url();?>styles/facebox/src/closelabel.png"
         })
    })
</script>

这是我div的代码

<?php if(isset($$j)) : foreach($$j as $row) : ?>
    <div class="single-result" id="single-result">
        <div class="name"><?php echo $row->Name; ?></div>
        <div class="description"><?php echo $row->Description; ?></div>
    </div>
<?php endforeach; ?>
<?php else : ?>
    error here
<?php endif; ?>

我想要的是一些ajax代码,当用户点击div id =“single-result”时调用一个函数,以便它对从数据库中获取数据的php控制器进行ajax调用,然后将视图加载到facebox模式窗口。

我不确定的部分是如何将其加载到facebox模式窗口中,我知道如何使用ajax调用使数据发送到文件,然后将视图加载到页面上的某个div中,l只是希望它将它加载到模态窗口而不是页面上的某个div。

这有可能吗? (我也在为php框架使用codeigniter)

这是我的ajax代码,当用户点击div时,它会将ajax请求结果加载到content-right div中。

<script type="text/javascript">
                $("#single-result").click(function() {

                    var form_data = {
                        ajax: '1',
                        itemcode: "<?php echo $row->id; ?>"
                    };


                    $.ajax({
                        url: "<?php echo site_url('ajax/item_info_right'); ?>",
                        type: 'POST',
                        data: form_data,
                        success: function(msg) {
                            $('#content-right').html(msg);
                        }
                    });

                    return false;
                });
                </script>
                <!-- END -->

如何修改上面的代码,使其进入facebox模式窗口?我知道facebox在下面提供了这个代码,但我不知道该如何处理它?<​​/ p>

jQuery.facebox(function() { 
    jQuery.get('code.js', function(data) {
        jQuery.facebox('<textarea>' + data + '</textarea>')
    })
})

1 个答案:

答案 0 :(得分:0)

你所追求的并不是很清楚......

如果你想要的是将ajax POST返回的数据填充到facebox中,只需在ajax post的成功回调中调用facebox:

    $("#single-result").click(function() {
        var form_data = {
            ajax: '1',
            itemcode: "<?php echo $row->id; ?>"
        };


        $.ajax({
            url: "<?php echo site_url('ajax/item_info_right'); ?>",
            type: 'POST',
            data: form_data,
            success: function(msg) {
                jQuery.facebox(msg);
            })
        });

或者,看起来如果你想在处理帖子时加载facebox加载图形,你可以将ajax POST包装在facebox函数中:

$("#single-result").click(function() {
    jQuery.facebox(function() { 
        var form_data = {
            ajax: '1',
            itemcode: "<?php echo $row->id; ?>"
        };
        $.ajax({
            url: "<?php echo site_url('ajax/item_info_right'); ?>",
            type: 'POST',
            data: form_data,
            success: function(msg) {
                jQuery.facebox(msg);
            })
        });
    })
})