2013-11-11 2 views
0


Я пытался выяснить, как вызвать функцию в контроллере из сценария javascript/jquery. Эта функция называется do_search, и мне нужно вызвать ее из сценария в представлении. Его нужно вызывать внутри условия else. Все, что я нашел в Интернете, использует AJAX, но я все равно переадресую пользователя на новую страницу, поэтому мне просто нужно вызвать функцию.
Я хотел бы поблагодарить вас заранее за чтение этого и, самое главное, за ваши ответы.
контроллерКак вызвать функцию внутри контроллера CodeIgniter с помощью javascript/jquery?

<?php 
class Test extends CI_Controller { 

    public function __construct() { 

     parent::__construct(); 


    } 

    public function index() { 

     $this->load->view('test_view'); 

    } 

    public function do_search() { 
     <!-- Implementation of search query to the DB --> 
     $this->load->view('search_results_view'); 
    } 
} 

вид

<body> 
    <form> 
     <div id="navigation_bar"> 
      <div id="search"> 
       <form> 

        <div id="do_search_btn" class="menu" style="display: none;"> 
         <p id="center">Do Search</p> 
        </div> 

        <div id="search_field" class="menu" style="display: none;"> 
         <input type="text" name="search_field_input" id="search_input" value="Type in here"> 
        </div> 

       </form> 
      </div> 
     </div> 
     <script type="text/javascript"> 

       $("#do_search_btn").click(function() { 

        var input = $("[name='search_field_input']").val(); 

        if(input ==""){ 
        $("[name='search_field_input']").val("Enter search 1st"); 

        } 
        else if(input=="Type in here") 
        { 
         $("[name='search_field_input']").val("Enter search 1st"); 
        } 
        else if(input=="Enter search 1st") 
        { 
         $("[name='search_field_input']").val("Enter search 1st"); 
        } 
        else { 
        <!-- CALL THE FUNCTION FROM THE CONTROLLER HERE PLEASE --> 
        } 
       }); 
     </script> 
    </form> 
</body> 
+1

использовать '$ .ajax',' $ .get' или '$ .post' – Philipp

ответ

0

Поскольку вы используете JQuery, то это просто использовать Ajax для вызова функции в контроллере. Пример:

if(input ==""){ 
    $("[name='search_field_input']").val("Enter search 1st"); 
} 
else if(input=="Type in here") 
{ 
    $("[name='search_field_input']").val("Enter search 1st"); 
} 
else if(input=="Enter search 1st") 
{ 
    $("[name='search_field_input']").val("Enter search 1st"); 
} 
else { 

    $.ajax({ 
      type:'POST', 
      url:'test/do_search', 
      data:{'search':input}, 
      success:function(data){ 
       $('#resultdiv').html(data); 
      } 
     }); 
} 

В контроллере можно получить доступ к данным, размещенных следующим образом:

public function do_search() { 
$search = $this->input->post('search'); 
<!-- Implementation of search query to the DB --> 
$this->load->view('search_results_view'); 
} 

#resultdiv просто <div>, что вы могли бы поместить результат поиска в, если вы хотите.

+0

Хорошо, и не могли бы вы рассказать мне, как я могу работать с обработанным значением? В какой переменной он хранится? А также что означает #resultdiv? –

+0

@James, я отредактировал мой ответ, см. Выше. – GluePear

+0

Большое спасибо. У меня есть еще один вопрос. Если бы у меня было два или более полей ввода, как бы я их обрабатывал? Скажем, помимо

Смежные вопросы