jQuery无法正常运行

时间:2016-10-15 08:39:28

标签: javascript jquery mysql ajax codeigniter

当我从选择框中选择一个值时,我需要在另一个字段上获取相应的值。这是我的表

     id     first_name  last_name      stud_id      dob         hostel   class  room  bed   status
    175     siraj         k           WPGH00175   01-10-2016      7       28    41    2A    P
    176     nesru         kv          WPGH00176   31-10-2016      7       28    41    2B    P
    177     faizal        ep          WPGH00177   31-10-2016      7       28    41    2C    P
    179     mashoor       uv          WPGH00179   24-10-2016      7       28    41    2D    G

这是我的观看页面

<div class="form-group" id="stud_id">
          <label for="student" class="col-sm-4 control-label">Student ID</label>
          <div class="col-sm-5">
            <select class="chosen-select chosen-transparent form-control" name="student" id="student">
             <option value="">--Select Student-- </option>
            <?php foreach ($students  as $row) { ?>
              <option value="<?php echo $row->id; ?>"><?php echo $row->stud_id; ?></option>
              <?php }?>
            </select>
          </div>
        </div>
        <div class="form-group">
          <label for="input01" class="col-sm-4 control-label">First Name:</label>
          <div class="col-sm-5" >
            <input type="text" class="form-control" id="first_name1" name="first_name" value="">
          </div>
        </div>

这是我的jQuery

 <script type="text/javascript">
 $(document).ready(function(){

   $('#student').change(function(){ 
      var stud_id=$('#student').val();

      var url='<?php echo base_url(); ?>hostel/ajax_data';

      $.post(url,{s_id:stud_id}, function(data)
          {
        //alert();
             $("#first_name1").html(data);
          });
        });
     });
    </script>

这是我的控件

public function ajax_data()
{
  $stud_id = $_POST['s_id'];
  $data['result'] = $this->admin_model->ajax_name($stud_id);
  $this->load->view('hostel/ajax_data',$data);
}

这是我的模特

public function ajax_name($stud_id)
{
    $query=$this->db->get_where('student_hostel',array('id'=>$stud_id))->row();
    return $query;
}

当我给val而不是html时,我在视图中给出的整个显示。 这是我的看法

<input type="text" class="form-control" id="first_name1" name="first_name" value="<?php echo $result->first_name;?>">

1 个答案:

答案 0 :(得分:1)

在视图(hostel / ajax_data)中,您正在打印整个html输入并尝试使用jquery在已加载的输入中再次放置它 - 这没有多大意义。 你只能回应

<?php echo $result->first_name;?> 

在视图中或直接在控制器中使用jquery将此响应放入加载的输入中,如下所示:

$("#first_name1").val(data);

如果您需要更多数据,不仅仅是名字,在这种情况下您可以制作json。

示例:

模特改变:

public function ajax_name($stud_id)
{
    $query=$this->db->get_where('student_hostel',array('id'=>$stud_id))->row_array(); //use row_array instead of row() to return an array
    return $query;
}

控制器更改

public function ajax_data()
{
  $stud_id = $_POST['s_id'];
  $result = $this->admin_model->ajax_name($stud_id);
  echo json_encode($result); //converting the array to json string and outputting it directly instead of using view
 }

jQuery的变化:

<script type="text/javascript">
 $(document).ready(function(){

   $('#student').on("change",function(e){ 
      var stud_id = $(this).val();

      var url='<?php echo base_url('hostel/ajax_data'); ?>';
     $.ajax({
        url: url,
        type: "post",
        data:{s_id: stud_id},
        success: function(result){
            var data = JSON.parse(result); //parsing server response to JSON object
            // Now data is an object. As your query in model is returning all fields, you can also use other fields like in this way: data.last_name, data.dob etc
            $("#first_name1").val(data.first_name);  //updating the input field with retrieved value. This way you also update other fields if necessary
        }
      });

   });
 });
</script>