Uncaught SyntaxError: неожиданный токен <в JSON в позиции 0 из ответа Codeigniter - PullRequest
0 голосов
/ 11 мая 2018
<option value="Petrol/Diesel">Petrol</option><option
value="Petrol/Diesel">Diesel</option>

- это вывод, сгенерированный, когда я вижу его в chrome> network.

Невозможно использовать оператор «in» для поиска «length» в

Или я получаю ошибку выше. Код работает нормально и до успеха внутри <script>, что я тут делаю не так?

$.each(JSON.parse(result), function() {            
  $('#fuel').append(result);
});  

Модель:

public function getFuel($modelid, $variant)
{
  $query= "SELECT * FROM `pms_details` WHERE `model_id` = '".$modelid."' AND `Variant` LIKE '".$variant."' ORDER BY `pms_id` ASC";
  $result = $this->db->query($query);
  return $result->result();

  print_r($result->result());
}

Вид:

<select id="fuel" onchange="getKm()" >
  <option value="na">Fuel</option>
</select>

<script>
  function getFuel() {  
    var getVariant = $('#variant').val();
    var car_model = $('#car_model').val();
    console.log("this is inside get Fuel");

    console.log(car_model);
    console.log(getVariant);

    $.ajax({
      url: "<?php echo base_url() ?>pms1/getFuel/"+car_model+"/"+getVariant, 
      dataType: "html",
      success: function(result) {
        $('#fuel').html('<option>SELECT</option>');
        $.each(JSON.parse(result), function() {            
          $('#fuel').append(result);
        });  
      }
    });
  }
</script>

Контроллер:

public function getFuel($modelid, $variant) 
{
    $car_model = $modelid;
    $getVariant = $variant;

    $this->load->model('M_address');
    $fuel = $this->M_address->getFuel($modelid,$variant);

    $fuel_list = array();
    foreach ($fuel as $fuels) 
    {
      array_push($fuel_list, $fuels->fuel);
    }
    $fuel_list = array_unique($fuel_list);
    // echo '<option value="na">Fuel</option>';
    foreach ($fuel_list as $fuel) 
    {   
      $ts = explode('/', $fuel);
      $ss = count($ts);
      foreach($ts as $tt)
      {
        echo '<option value="' . $fuel . '">' . $tt . '</option>';
        //I've tries adding json_encode on the above line.
      }
    }                      
  }

1 Ответ

0 голосов
/ 12 мая 2018

Если вы хотите использовать json, вам нужно сделать что-то вроде следующего:

Контроллер:

$options = array();
foreach ($fuel_list as $fuel) 
{   
  $ts = explode('/', $fuel);
  $ss = count($ts);
  foreach($ts as $tt)
  {
    $options[] = array('value' => $fuel, 'name' => $tt);
    //echo '<option value="' . $fuel . '">' . $tt . '</option>';
    //I've tries adding json_encode on the above line.
  }
}
echo json_encode($options);     

JS:

$.ajax({
  url: "<?php echo base_url() ?>pms1/getFuel/"+car_model+"/"+getVariant, 
  dataType: "json",
  success: function(result) {
    $('#fuel').html('<option>SELECT</option>');
    $.each(result, function (index, data) {
         var new_option = new Option(data.name, data.value);
         $('#fuel').append(new_option);
    });
  }
});

Хотя вы могли бытакже, вероятно, просто отказывается от $ .each и добавляет результат так (используя ваш метод):

success: function(result) {
        $('#fuel').html('<option>SELECT</option>');
        //$.each(JSON.parse(result), function() {            
          $('#fuel').append(result);
        //});  
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...