2011-07-12 43 views
1

当我做console.log(data);来获取Ajax结果数据时,虽然结果出现在搜索表单div中,但我得到了整个页面源而不是结果,只在返回的数据中)Codigniter的Ajax结果是整个HTML页面而不仅仅是数据

我如何获取数据?

这是视图:

<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'))); 
} 
+0

如果你只能随声附和结果同列标题,会发生什么/页脚视图? – DirkZz

回答

0

试试这个:

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

是。那是对的。

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

如果是我的话,我会考虑这一点:

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); 
     } 
    }); 
}); 
+0

它的工作原理!但是现在我得到这个我不知道它是什么...'{“conn_id”:null,“result_id”:null,“result_array”:[],“result_object”:[],“custom_result_object”:[] ,“current_row”:0,“num_rows”:2,“row_data”:null}' – ilyo

+0

啊。这是CI查询对象的表示,请参阅上面的更新。 – cwallenpoole

相关问题