2011-07-12 66 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

相關問題