javascript - Codeigniter:在控制台上未获得第二次结果,但 Ajax 并未失败

标签 javascript php jquery ajax codeigniter

我正在解决类似于在Codeigniter中选择:国家->州->城市(通过ajax)的问题,我想在其中加载系列->season_num->episodes系列时得到season_num的结果,但我的ajax或查询(不知道哪个)运行不正确当它将数据返回到 ajax 作为成功时,我得到空记录,我正在尝试打印查询结果,但它甚至没有在控制台中打印它。
这是我的 Ajax 函数:

<script>
 function selectSeasons(series_id)
  {
  // alert(series_id);
   if(series_id != "-1")
   {
     loadData('season',series_id);
     $("#city_dropdown").html("<option value='-1'>Select Episode</option>");  
   }

   else
   {
    $("#season_dropdown").html("<option value='-1'>Select Season Num</option>");
    $("#episode_dropdown").html("<option value='-1'>Select Episode</option>");    
    }
   }

function selectEpisodes(season_id)
 {
  if(season_id != "-1"){
  loadData('episode',season_id);
 }
 else
 {
  $("#episode_dropdown").html("<option value='-1'>Select Episode</option>");    
 }
}

function loadData(loadType,loadId)
{
// season as type and option as its id
var dataString = 'loadType='+ loadType +'&loadId='+ loadId;
// alert(dataString);
$("#"+loadType+"_loader").show();
  $("#"+loadType+"_loader").fadeIn(400).html('Please wait... ');
$.ajax({
  type: "POST",
  url: "<?php echo base_url() ?>seasons/loadData",
  data: dataString,
  cache: false,
  success: function(result)
  {
    console.log('success');
    console.log(result);
    $("#"+loadType+"_loader").hide();
    $("#"+loadType+"_dropdown").html("<option value='-1'>Select "+loadType+"</option>");  
    $("#"+loadType+"_dropdown").append(result);  
  },
   fail: function(result)
   {
    console.log('Fail');
    console.log(result);

  }
});

}

这是我的 Controller 函数:Season/loadData

public function loadData()
{
    $session_id = $this->session->userdata('id');
    if (isset($session_id)) 
    {
        $loadType = $_POST['loadType'];
        $loadId   = $_POST['loadId'];
        $HTML="";

        if ($loadType = "season") 
        {
            $result = $this->model_season->getSeasonData($loadType,$loadId);
            if($result->num_rows() > 0)
            {
                // print_r($result->result());
                // die();
                foreach($result->result() as $list)
                {
                    $HTML.="<option value='".$list->season_num_id."'>".$list->season_num."</option>";
                }

            }

            echo $HTML;
        }

        else
        {
            $result = $this->model_season->getEpisodeData($loadType,$loadId);
            // echo $result;

            if($result->num_rows() > 0)
            {

                foreach($result->result() as $list)
                {
                    $HTML.="<option value='".$list->episodes_id."'>".$list->episode."</option>";
                }
            }
            echo $HTML;
        }

    }
    else
    {
        redirect('user_authentication');
    }
}

这是我的模型类,我正在其中从数据库获取结果:

function getSeasonData($loadType,$loadId)
{
    $fieldList    ='season_num_id,season_num';
    $table        ='season_num';
    $fieldName    ='seasons_id_fk';
    $orderByField ='season_num';

    $this->db->select($fieldList);
    $this->db->from($table);
    $this->db->where($fieldName, $loadId);
    $this->db->order_by($orderByField, 'asc');
    $query=$this->db->get();
    if ($query) 
    {
        return $query; 
    }

    else
    {
        return FALSE;
    }


}

function getEpisodeData($loadType,$loadId)
{
    $fieldList     ='episodes_id, episode';
    $table         ='episodes';
    $fieldName     ='season_num_id_fk';
    $orderByField  ='episode';  

    $this->db->select($fieldList);
    $this->db->from($table);
    $this->db->where($fieldName, $loadId);
    $this->db->order_by($orderByField, 'asc');
    $query=$this->db->get();

    if ($query->row() > 0) 
    {
        return $query;
    }

    else
    {
        return FALSE;
    }

}

第一次选择系列时,我得到了选项,例如 1,2,3,4 但是,当我选择这些数字来获取更多剧集时,它不会返回任何内容,但不会失败 ajax 请求,甚至不会从 Else 条件打印任何内容。请帮忙吗?如果需要任何其他文件,请告诉我。谢谢

最佳答案

在ajax调用中使用error:而不是fail:来获取是否有错误

fail: function(result)
{
    console.log('Fail');
    console.log(result);
    $("#"+loadType+"_loader").hide();
    $("#"+loadType+"_dropdown").html("<option value='-1'>Select "+loadType+"</option>");  
    $("#"+loadType+"_dropdown").append(result);  
},

error: function(result)
{
    console.log(result);
}

注意:在 Codeigniter 中,如果 php 代码有任何错误,那么它将返回 500 状态响应,因此 ajax 成功函数无法处理此响应并将其传递给错误函数。但正如您使用的代码失败一样,这就是您没有收到任何日志的原因。

关于javascript - Codeigniter:在控制台上未获得第二次结果,但 Ajax 并未失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608989/

相关文章:

javascript - 在 Promise 返回函数中找到第一个成功

JavaScript 宾果游戏 - 使单元格可点击

javascript - 优化我的 Javascript/jQuery XML 函数

php - MySQL如何通过票数获取用户排名

python - Django:进行 ajax 调用时出现错误 500(内部服务器错误)

javascript - JQuery插件函数调用

javascript - 配置JavaScript单元测试并 promise 声明

javascript - React 不会在 map 函数中渲染

php - 在 Laravel 5 中将所有 Http 请求重定向到 Https

php - Woocommerce通过php更改产品图片