Codeigniter - 发布表单变量并通过jQuery AJAX检索

时间:2011-01-27 07:57:35

标签: php jquery codeigniter

我需要使用Ajax jQuery发布变量并在Codeigniter中获取结果。

虽然我的数据库有内容,但代码仍然返回空数组。 - array(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 个答案:

答案 0 :(得分:2)

您需要对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'
    );

});

});

你需要告诉Javascript你期待一个JSON对象。

<强> CONTROLLER

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

   echo json_encode($result);
}

您的PHP代码应该返回一个JSON对象。

答案 1 :(得分:0)

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