1

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/页面。

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

4

1 回答 1

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>

查询:

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;
}
于 2013-01-14T16:41:56.900 回答