【问题标题】:Retrieve data from model via controller using ajax in cakephp 3在 cakephp 3 中使用 ajax 通过控制器从模型中检索数据
【发布时间】:2015-12-07 03:19:34
【问题描述】:

我正在使用 cakephp 3 开发一个网站。我对此很陌生。我正在尝试从 ItinerariesController 中的函数 getSelectedItineraryData() 检索数据。 这是我的控制器代码:

public function getSelectedItineraryData()
    {
        $selected_itinerary = @$this->request->data('id');
        $locationdata = $this->Itineraries->find('locationdetails', [
            'selected_itinerary' => $selected_itinerary
        ]);

     return json_encode($locationdata);

    }

这使用位于模型文件 ItinerariesTable 中的自定义查找器方法。

public function findLocationdetails(Query $query, array $options)
    {
        return $this->find()
            ->distinct(['Intineraries.id'])
            ->matching('Itineraries', function ($q) use ($options) {
                return $q->where(['Itineraries.name IN' => $options['selected_itinerary']]);
            });
    }

这是调用控制器的 ajax 请求:

function getwypts(callback){
         $.ajax({
        url: "/Itineraries/getSelectedItineraryData/" + selected_i,
        type: "POST",
        data: {
        id: selected_i
        },
        //async: false,
        success: function(result, status) {
            var dayint = 1;
            alert(result);
            itins = JSON.parse(result);
            var day_arr = JSON.parse(itins.day_array);
            var json_day_list = JSON.parse(itins.json_day_data);
            $('#temp_dir_array').val(JSON.stringify(day_arr));
            $('#sel_id_name').text(itins.name);
            start_n = itins.start_name;
            end_n = itins.end_name;
            var tempp = JSON.parse(itins.day_array);
            waypt_obj.start = itins.start;
            waypt_obj.end = itins.end;
            waypt_obj.waypt = itins.arr_intin;
            for (dayint = 0; dayint < json_day_list.length; dayint++) {
                temp11 = tempp[dayint];
                $("#itin_list").append('<div id="itinerary_item_' + (dayint + 1) + '"  value="' + dayint + '"><a  href="#" style= "border: 2px solid red;list-style-position: inside; margin: 5px" class="list-group-item testing"><input type="hidden" id="viewport_wp_item" value="' + tempp[dayint][0] + '" ></input><div class="alert alert-success"><b>Day  ' + (dayint + 1) + ' of Trip (Overnight stay at ' + json_day_list[dayint].overnight + ')</b></div><div id="" class="alert alert-info"><b>Places Visited: ' + json_day_list[dayint].places + '</b><br>' + json_day_list[dayint].desc + '</div></a></div>');

            }
            if(callback) {
            callback();
            }
        }
    });

    }

我遇到的问题是这个请求返回一个空结果。这似乎是因为自定义查找方法没有返回正确的响应。我的控制器出了什么问题? 还是错误来自其他地方? 在此先感谢,现在已经连续尝试了几个小时。

【问题讨论】:

  • 您是否尝试过在流程的不同部分只执行标准 debug() 以查看它的进展情况?

标签: php jquery ajax cakephp


【解决方案1】:

只需将它放在您的控制器上。希望您的问题能得到解决!

public function getSelectedItineraryData($ID)
{
    $selected_itinerary = $ID;
    $locationdata = $this->Itineraries->find('locationdetails', [
        'selected_itinerary' => $selected_itinerary
    ]);

 return json_encode($locationdata);

}

【讨论】:

  • 谢谢,这有效,但没有回报。而不是我使用echo json_encode($locationdata); exit();这是为什么?
  • 谢谢,它确实解决了剩下的一半问题,但还有一件事,没有exit(); 部分,代码将无法工作。我知道这是退出函数,但为什么它不会在最后退出函数呢?请帮忙!
猜你喜欢
  • 1970-01-01
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多