Codeigniter - Публикация переменных формы и получение через jQuery AJAX - PullRequest
0 голосов
/ 27 января 2011

Мне нужно опубликовать переменную и получить результат в Codeigniter с помощью Ajax jQuery.

Хотя в моей базе данных есть контент, код все равно возвращает мне пустой массив.- массив (0) {}.Проблема в том, что переменная не публикуется из формы.Вот мой код:

ФОРМАТ КОДА - Просмотр:

<form id = "myform1" onsubmit="return false">
 <select name="field_country">
 <option value="0">Argentina</option>
 <option value="1">Chile</option>
 </select>
</form>

Javascript - в поле зрения :

jQuery(document).ready(function($){
 $("select[name='field_country']").change(function(){
  var country_name= $("select[name='field_country'] option:selected").text();
  $.post("<?= base_url(); ?>index.php/catalog/getCities/", {country:country_name}, function(data){
   alert(data);
  })
 })
})

контроллер catalog.php - функция:

function getCities(){
 $country_name = $this->input->post('country', 'Argentina');
 $result = $this->catalog_model->getCitiesNames($country_name);
 var_dump($result);
}

catalog_model Функция модели:

function getCitiesNames($country_name) {
 $cities=array();
 $result = $this->db->query("SELECT title FROM cities WHERE country = '".$country_name."'");
 foreach ($result->result() as $row) {
  array_push($cities, $row->title);
 }
 return $cities;
}

Ответы [ 2 ]

2 голосов
/ 27 января 2011

Вам необходимо внести небольшие изменения в ваш код Javascript и Controller. Чтобы Javascript и PHP могли обмениваться данными друг с другом, вы должны указать обеим частям кода, какой формат вы используете для передачи информации. Самый простой и распространенный формат - JSON. Поэтому вам нужно изменить код для отправки и получения JSON.

ФОРМАТ

<form id="myform1" onsubmit="return false">
    <select id='country' name="field_country">
       <option value="0">Argentina</option>
       <option value="1">Chile</option>
    </select>
</form>

Я добавил id='country' к вашему select для более легкого доступа.

JAVASCRIPT

$(document).ready(function(){
   // When the SELECT is changed
   $("#myform1 #country").change(function(){

    var country_name= $(this).find("option:selected").text();
    $.post ( "<?= base_url(); ?>index.php/catalog/getCities/",
             { country:country_name },
             function(data){
                ...on success do something here
             },
             'json'
    );

});
* * 1016});

Вам нужно сообщить Javascript, что вы ожидаете JSON объект обратно.

CONTROLLER

function getCities(){
   $country_name = $this->input->post('country');
   $result = $this->catalog_model->getCitiesNames($country_name);

   echo json_encode($result);
}

Ваш PHP-код должен затем вернуть объект JSON.

0 голосов
/ 27 января 2011
jQuery(document).ready(function($){
$("select[name='field_country']").change(function(){
    var country_name= $("select[name='field_country'] option:selected").text();
    $.ajax({
  type: "POST",
   url: "<?= base_url(); ?>index.php/catalog/getCities/",
   data: "country="+country_name,   
   success: function(data){
            alert(data);
       }
    });
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...