Javascript没有响应编码器


javascript no response codeigniter

这个下拉菜单依赖于其他两个下拉菜单的选择,

我已经调试过了,我看到的唯一错误是,它从来没有成功过

这是我的javascript

jQuery(document).ready(function(){
  $("#GRADE").change(function() {
    var TRANCHE = {"TRANCHE" : $('#TRANCHE').val()};
    var GRADE = {"GRADE" : $('#GRADE').val()};
    console.log(TRANCHE);
    console.log(GRADE);
    $.ajax({
      type: "POST",
      dataType: "json",
      data: {
        TRANCHE : "TRANCHE",
        GRADE : "GRADE"
      },
      url: "<?php base_url(); ?>EmployeeSalary/dependent_dropdown2/",
      success: function(data){
          var select = $('#SAL_ID');
          select.html('');
          $.each(data, function(i, option){
              select.append("<option value='"+option.ID+"'>"+option.AMOUNT+"</option>");
          });
      }
     });
   });
 });

这里是控制器

   public function dependent_dropdown2()
   {
       if(isset($_POST['TRANCHE']))
       {
            $data = $_POST['TRANCHE'];
            $data1 = $_POST['GRADE'];
            $this->output
            ->set_content_type("application/json")
            ->set_output(json_encode($this->EmployeeSalary_Model->getType2($data, $data1)));
       }
   }

为什么它不触发success函数?

可能是控制器没有向浏览器返回任何内容。请尝试不直接使用output类。

public function dependent_dropdown2()
{
  if(isset($_POST['TRANCHE']))
  {
    $data = $_POST['TRANCHE'];
    $data1 = $_POST['GRADE'];
    echo json_encode($this->EmployeeSalary_Model->getType2($data, $data1));
  }
}

看起来提供给$.ajax的数据结构也关闭了。

jQuery(document).ready(function () {
  $("#GRADE").change(function () {
    var posting = {TRANCHE: $('#TRANCHE').val(), GRADE: $('#GRADE').val()};
    $.ajax({
      type: "POST",
      dataType: "json",
      data: posting,
      url: "<?php base_url(); ?>EmployeeSalary/dependent_dropdown2/",
      success: function (data) {
        console.log(data);
        var select = $('#SAL_ID');
        select.html('');
        $.each(data, function (i, option) {
          select.append("<option value='" + option.ID + "'>" + option.AMOUNT + "</option>");
        });
      }
    });
  });
});

在ajax调用中有一个小错别字。我认为你必须在ajax的数据对象中传递变量(TRANCHE,GRADE),而不是传递字符串("TRANCHE","GRADE")。下面是代码

jQuery(document).ready(function(){
  $("#GRADE").change(function() {
    var TRANCHE = {"TRANCHE" : $('#TRANCHE').val()};
    var GRADE = {"GRADE" : $('#GRADE').val()};
    console.log(TRANCHE);
    console.log(GRADE);
    $.ajax({
      type: "POST",
      dataType: "json",
      data: {
        TRANCHE : TRANCHE, //pass the variable
        GRADE : GRADE
      },
      url: "<?php base_url(); ?>EmployeeSalary/dependent_dropdown2/",
      success: function(data){
          var select = $('#SAL_ID');
          select.html('');
          $.each(data, function(i, option){
              select.append("<option value='"+option.ID+"'>"+option.AMOUNT+"</option>");
          });
      }
     });
   });
 });

其余的看起来都不错。您可以通过像

这样打印post请求来调试post请求
 public function dependent_dropdown2()
   {
       if(isset($_POST['TRANCHE']))
       {
            $data = $_POST['TRANCHE'];
            $data1 = $_POST['GRADE'];
            print_r($data1);
           print_r($data2);
       }
   }

尝试从变量中删除对象,

jQuery(document).ready(function(){
  $("#GRADE").change(function() {
    var TRANCHE = $('#TRANCHE').val();
    var GRADE =  $('#GRADE').val();
    console.log(TRANCHE);
    console.log(GRADE);
    $.ajax({
      type: "POST",
      dataType: "json",
      data: {
        TRANCHE : "TRANCHE",
        GRADE : "GRADE"
      },
      url: "<?php base_url(); ?>EmployeeSalary/dependent_dropdown2/",
      success: function(data){
          var select = $('#SAL_ID');
          select.html('');
          $.each(data, function(i, option){
              select.append("<option value='"+option.ID+"'>"+option.AMOUNT+"</option>");
          });
      }
     });
   });
 });

---------------------- 添加返回码 -------------------

返回方法使用

public function dependent_dropdown2_asd() 
{ 
if(isset($_POST['TRANCHE'])) 
{ 
$TRANCHE = $_POST['TRANCHE']; 
$GRADE = $_POST['GRADE']; 
$data=array('Responce'=>200);
header('Content-Type: application/json'); 
echo json_encode($data); 
} 
}