Ajax Issue в CI.Получение данных, но JQuery показывает ошибку - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующий код

<?php
$arr=array();
$arr=$this->session->ques;
if(isset($this->session->username))
{
 echo '<div id="instruction">
      Welcome to Exam
     </div>';
 echo '<div id="questdiv">
       Start Now
     </div>';   
}
?>
$(document).ready(function(){
$("#questdiv").click(function()
{
    $("#instruction").hide();
    $.ajax({
      type:"post",
      url:"<?php echo base_url();?>"+"candidate/nextques",
      dataType:"json",
      data:{val: <?php echo json_encode($arr);?>},
      success:function(res){
      if(res)
      {
       $("#questdiv").append('<span>'+res[0]['question']);
       $("#questdiv").append('<span>'+res[0]['option1']);
       $("#questdiv").append('<span>'+res[0]['column2']);
       $("#questdiv").append('<span>'+res[0]['column3']);
       $("#questdiv").append('<span>'+res[0]['column4']);
      }
    },
    error: function(res,status,error) {
        var err = res.responseText;
      alert(res.Message);
      alert(status);
      alert(error);
    }
    }); 
  });   
});
</script>

В этом коде у меня есть два div.Я хочу, чтобы при нажатии на div questdiv AJAX запускался, получал значения из модели контроллера и добавлял некоторых дочерних элементов в div.

Хотя данные выбираются из базы данных (как показаноотладкой по сети), но в предварительном просмотре также показаны два вышеупомянутых div, из-за которых я получаю ошибку синтаксического анализа JSON.

[{"sno":"1","examcode":"PHP-101","question":"What is PHP?","image":"1-1.jpg","option1":"scripting language","image1":"1-2.jpg","option2":"programming language","image2":"1-3.jpg","option3":"both","image3":"1-4.jpg","option4":"none","image4":"1-5.jpg","correctans":"d58abf157fec3d16bf921e97966c9e57"}]
Welcome to Exam
Start Now

Я не могу выяснить, почему я получаю ошибку синтаксического анализа при работе с контроллераЯ получаю только действительные данные JSON?

А если Добро пожаловать на экзамен и Начать экзамен создают проблемы, то как их решить?

1 Ответ

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

У вас должны быть отдельные методы контроллера, один, который отображает страницу с помощью div, и тот, который возвращает только ваш объект json.Как бы вы это ни делали, у вас не будет действительного объекта json, потому что там тоже рендерится div-ы (потому что это по сути повторный рендеринг страницы при вызове ajax).

Пример:

class Some_controller {

    public function index() {
        $this->load->view('someview');
    }

    public function json() {
        $array = array('123', '456');
        echo json_encode($array);
    }

}

Someview:

<script>
    $(document).ready(function () {
        $('#doAction').on('click', function (e) {
            e.preventDefault();
            $.ajax({
                type: "get",
                url: "<?php echo base_url(); ?>some_controller/json",
                dataType: "json",
                success: function (res) {
                    console.log(res);
                }
            });
        });
    });
</script>
<div><a id="doAction" href="javascript:void()">Some div</a></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...