【问题标题】:Ajax response not loading in view pageAjax 响应未加载到视图页面中
【发布时间】:2017-07-25 04:17:24
【问题描述】:

我正在使用完整的日历功能。但是视图页面中没有显示数据。只显示日历本身。谁能帮我找到解决方案。这是我的代码:

查看页面:

<script type="text/javascript">

        $(document).on("click", ".calendarview", function () {  

        var roomid = $(this).data('id');
        //alert(roomid);exit;

         $('#calendar_view').fullCalendar({
            //events: [
    //          {
    //                  title: 'All Day Event',
    //                  start: roomid
    //              }
    //                  ]
            events: {
            url: base_url+'home/calview',
                dataType: 'json',
               data: {roomid: roomid},
               type: 'POST', // Send post data
               error: function() {
                 alert('There was an error while fetching events.');
               }
            }
         });
    });
</script>

在控制器中

function calview()
       {
                    $room_id =$this->input->post('roomid');
                    $events=$this->Home_model->find_room_availability($room_id); 
                        $data_events = array();
                        foreach($events as $r) {
                    $data_events[] = array(
            //"title" => $r->available,
                    "description" => 'available',
                    "start" => $r->dt);
                        }
                echo json_encode(array("events" => $data_events));
                exit();
        }

型号:

function find_room_availability($room_id){
    $result = $this->db->query("SELECT x.dt , r.room_cnt - COALESCE(SUM(`booking_cnt`),0) available FROM calendar_table x LEFT JOIN bookinglist y ON x.dt >= y.`date_from` AND x.dt < y.`date_to` LEFT JOIN rooms r ON r.id=$room_id WHERE x.dt BETWEEN now() - interval 3 month AND now() + interval 5 month GROUP BY dt ");                                           
    //echo $this->db->last_query();
    //exit;
  return $result->result();     

}

Ajax 响应就像

[[{"title":"10","start":"2017-04-26"},
  {"title":"10","start":"2017-04-27"},
  {"title":"10","start":"2017-04-28"},
  {"title":"10","start":"2017-04-29"},
  {"title":"10","start":"2017-04-30"},
  {"title":"10","start":"2017-05-01"},
  {"title":"10","start":"2017-05-02"},
  {"title":"10","start":"2017-05-03"},
  {"title":"10","start":"2017-05-04"},
  {"title":"10","start":"2017-05-05"},
  {"title":"10","start":"2017-05-06"},
  {"title":"10","start":"2017-05-07"},
  {"title":"10","start":"2017-05-08"},
  {"title":"10","start":"2017-05-09"},
  {"title":"10","start":"2017-05-10"},
  {"title":"10","start":"2017-05-11"},
  {"title":"10","start":"2017-05-12"},
  {"title":"10","start":"2017-05-13"},
  {"title":"10","start":"2017-05-14"},
  {"title":"10","start":"2017-05-15"},
  {"title":"10","start":"2017-05-16"},
  {"title":"10","start":"2017-05-17"},}]]

谁能帮我找到解决办法

【问题讨论】:

  • 可能是移除 exit();
  • 也试过了,但没有得到解决方案
  • ajax 响应中的问题,它从[[{ 开始并以},}]] 结束,但你想要这样的响应[{"title":"10","start":"2017-04-26"},{"title":"10","start":"2017-04-27"},{"title":"10","start":"2017-04-28"},{"title":"10","start":"2017-04-29"},{"title":"10","start":"2017-04-30"},{"title":"10","start":"2017-05-01"},{"title":"10","start":"2017-05-02"},{"title":"10","start":"2017-05-03"},{"title":"10","start":"2017-05-04"},{"title":"10","start":"2017-05-05"},{"title":"10","start":"2017-05-06"},{"title":"10","start":"2017-05-07"}]
  • 不,先生,我的回答是,[[{"title":"10","start":"2017-04-26"},{"title":"10","开始":"2017-04-27"},{"title":"-12","start":"2017-11-02"},{"title":"-12","start":" 2017-11-03"},{"title":"-21","start":"2017-12-24"},{"title":"-23","start":"2017-12- 25"}]]
  • 但是从服务器获取的 Ajax 响应中的 events 对象在哪里 -> json_encode(array("events" =&gt; $data_events));

标签: mysql ajax codeigniter


【解决方案1】:

单击日历名称类时,您会在 AJAX SUCCESS CALL 中以 json 的形式获取数据,现在您需要使用帮助 java 脚本 .html() 格式分配该数据

因为您不是直接发送数据来查看页面,所以您是以 ajax 格式发送成功响应

success: function (data) {
  var obj = JSON.parse(data);
  $('#testdiv').val(obj.test);
 }

【讨论】:

    【解决方案2】:

    在控制器中设置页眉

    function calview(){
        $room_id =$this->input->post('roomid');
        $events=$this->Home_model->find_room_availability($room_id); 
        $data_events = array();
        foreach($events as $r) {
            $data_events[] = array(
                "title" => $r->available,
                "description" => 'available',
                "start" => $r->dt
            );
        }
        //set output header as json
        $this->output
            ->set_content_type('application/json')
            ->set_output(json_encode(array('events' => $data_events)));
    }
    

    改变你的 js 脚本

    <script type="text/javascript">
    $(document).on("click", ".calendarview", function () {
        var roomid = $(this).data('id');
        $('#calendar_view').fullCalendar({
        events: function(start, end, timezone, cb) {
        $.ajax({
          url: '<?=base_url("home/calview");?>',
          dataType: 'json',
          data: {roomid: roomid},
          success: function(response) {
              var events = response.events;
              //pass object to callback function
              cb(events);
          }
        });
      }
     });
    });
    </script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2011-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多