2014-10-09 7 views
0

У меня есть страница, которая отображает все тестовые события по умолчанию (Initial Page View)Перезагрузить страницу используя различное значение с помощью Ajax

Мой контроллер:

public function testController() 
{ 
    $category = 0; //NEED TO BE CHANGED WHEN USER SELECTED TEST EVENT 2 AND GET ALL EVENTS (Category 2) 
    $getEventsBasedOnCategory = //DB QUERY TO GET ALL EVENTS (Category 0) 
    //Pass all events to view 
} 

Мой HTML-страница:

<select id = "event_filter"> 
    <option value="" selected="selected" disabled>SELECT Event</option> 
    <option value="0">All Test Events</option> 
    <option value="2">Test Event 2</option> 
</select> 

Мой запрос ajax:

$("#event_filter").change(function(){ 
    $.ajax({ 
      url: '/site/example/displayEvents', 
      data: { 
       event_filter: $("#event_filter").val() 
      }, 
      async: false, 
      type: 'POST', 
      success: function(data){ 

      }, 
    }); 

});

Мой вопрос: как изменить категорию на 2 (если пользователь выбрал 2 в поле выбора) и запросить снова из базы данных и отобразить события с категорией 2 на сайте?

Im использование codeigniter кстати. Спасибо

Спасибо, Извините, что беспокоили вас, ребята.

+0

Вы можете не получить доступ к 'event_filter' значение в функции контроллера, выполнив' $ _POST [ 'event_filter'] 'или что-то вроде '$ this-> вход-> пост ('event_filter')'? –

+0

Вам нужно добавить контроллер для вызова AJAX, который запрашивает базу данных для событий с категорией того, что когда-либо было выбрано. Затем вам нужно передать эти результаты обратно в jQuery, чтобы сгенерировать html для представления. Возможно, вам будет проще отказаться от AJAX и выполнить простой запрос POST на тот же контроллер. –

+0

Здравствуйте, я хочу, чтобы запрос выполнялся в событии onchange() поля select, а не при отправке формы. –

ответ

1

Извините за мой плохой английский.

Прежде всего, для извлечения данных из поста в использовании CodeIgniter $ this-> вход-> пост ('') event_filter.

Если вы вызываете «/ site/example/displayEvents», в этой функции «displayEvents» вы должны вызвать функцию в модели.

public function displayEvents(){ 
    $data->variableToSend = $this->example_model->events_data($this->input->post('event_filter')); 
    $this->load->view('nameOfViewToDisplayData',$data); 
} 

Вид является результатом вашего вызова ajax, тогда вы можете поместить его в div.

success: function(data){ 
    $('#target_div').html(data); 
}, 
+1

Спасибо, этот код мне очень помог! :) –

0

Когда вы используете тип: POST, это будет разместить его на следующий сайт :-)

Я так понимаю ваш вопрос, вам нужно $ категорию равным значению ваш выбор.

Я нету testet вам сценарий, но они, как вы это делаете:

$category = 0; if(isset($_POST['event_filter'])){ $category = $_POST['event_filter']; }

, а затем просто простой

"SELECT * FROM {your category} WHERE {your_row_category} = $categori" 
+0

Привет, что я хочу, так это то, что в событии onchange фильтра select он снова запросит DB. Я думаю, что $ _POST [] не может этого достичь –

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