Codeigniter的Ajax结果是整个HTML页面而不仅仅是数据

时间:2011-07-12 14:51:50

标签: jquery ajax codeigniter

当我console.log(data);获取Ajax结果数据时,我获取整个页面源而不仅仅是结果,尽管结果显示在搜索表单div中(仅在返回的数据中)

怎么做 我只得到数据?

这是观点:

<div id="form-all">    

    <form name="search" action="html_form_action.asp" method="post">
    <input type="text" name="search" />
    <input type="submit" value="חפש" />
    </form>

</div>

<script>

    $("form[0] :submit").live("click", function(event) {

        event.preventDefault();

        $.ajax({

            type: "POST",
            url: "<?= site_url('pages/search') ?>",
            data: {company : $("form[0] :text").val()},
            success: function(data) {

                console.log(data);
            }
        });
    });

</script>

这是控制器:

function search1()
{
    $data['page_title'] = 'Search';

    $this->load->view('head', $data);
    $this->load->view('pages/search', $data);
    $this->load->view('footer');

    return json_encode($this->Company->get_companies_by_name($this->input->post('company')));
}

2 个答案:

答案 0 :(得分:1)

是。这是对的。

jQuery AJAX请求的data属性与返回值无关 - 这完全是服务器发送的任何内容与success方法中发生的任何事情相结合的责任。你需要做一些重构。

如果是我,我会考虑这个:

function ajax_search()
{
    echo json_encode(
         $this->Company->get_companies_by_name(
             $this->input->post('company')
         )->result());
}

然后在jQuery中,只需将其更改为:

    event.preventDefault();

    $.ajax({

        type: "POST",
        url: "<?= site_url('pages/ajax_search') ?>",
        data: {company : $("form[0] :text").val()},
        success: function(data) {

            console.log(data);
        }
    });
});

答案 1 :(得分:0)

试试这个:

data: {"company" : $("form[0] :text").val()},