使用colorbox ajax通过提交发送数据

时间:2013-01-14 15:50:41

标签: php jquery ajax codeigniter colorbox

HTML

<div class="cus_input">
    <form id="category_form" method="GET" action="<?php echo base_url(); ?>welcome/find/" >
        <input type="text" id="category_input" name="q" placeholder=" Find Category"/>
        <a type="submit" class="ajax cboxElement" id="category_submit" src="<?php echo base_url() ?>img/board/icons/add.jpg" value="" />
    </form>
</div>

控制器

    function find()
{
        $this->pageload_model->load_page();
        $getquery = $this->input->get("q");
        $data['find'] = $this->find_model->get_find_view($getquery);
        $page['content'] = $this->load->view("template/findtemplate.php", $data);
        echo json_encode($page);
}

当您手动转到URI时,此控制器正确生成我想要的结果。在尝试使用jquery ui对话框时略微修改了它。但是,我更倾向于使用colorbox或fancybox。

找到模特:

    public function get_find_view($q)
    {
        if (!$q) {
        $html = "Search disrupted: <a href='". base_url()."'>Go back to main page </a>";
        return $html;
        } else {
        $accountdata['found'] = $this->find_model->get_found_view($q);
        $accountdata['create_category'] = $this->find_model->get_create_category_view($q);
        return $this->load->view('find/find_view', $accountdata , TRUE);
        }
    }

colobox ajax JS应该是:$('ajax').colorbox()

我在2个区域中有一个ajax类...一个直接链接,没有问题,以及上面提到的提交按钮。我要做的是将输入值发送到find()控制器,加载页面,并通过颜色框窗口打开它。我最终会在pushstate中添加一个更改,以便可以抓取并共享新的URL /页面。

我没有运气。谢谢您的帮助!将添加您可能需要的任何代码。

1 个答案:

答案 0 :(得分:1)

之前我没有使用过彩盒,所以我不是100%就此。我认为你需要做的是从表单序列化数据并自己处理ajax请求。所以像这样:

HTML:

<div class="cus_input">
    <form id="category_form" method="GET" action="<?php echo base_url(); ?>welcome/find/" onsubmit="return category_form_submit();" >
    <input type="text" id="category_input" name="q" placeholder=" Find Category"/>
    <a type="submit" id="category_submit" src="<?php echo base_url() ?>img/board/icons/add.jpg" value=""/>
    </form>
</div>

JQUERY:

function category_form_submit() {  
    $.get('/welcome/find?' + $('#category_form').serialize(), function(response){
        $.fn.colorbox({html:response});
        //here is where you could put your pushstate code
    });
    return false;
}