Codeigniter中的表单数据通过AJAX发送到Controller函数,该函数查询数据库并返回数组


Form data in Codeigniter sent via AJAX to a Controller function that queries a database and returns an array

我有一个名为mapsView的视图,其中包含一个映射,该映射是在名为maps()的控制器函数中生成的。在这个视图中,我还有一个单选按钮表单,用于过滤地图上的标记。

表单通过jquery和ajax发送到另一个名为get_markers()的控制器函数,该函数成功查询数据库并返回一组值,包括lng、lat和name,我需要将这些值传递回我的视图。

该数组被称为markerDetails,当我执行var_dump($query->result());时,我可以看到我的查询是成功的。

我是使用Codeigniter的新手,我遇到的问题是因为表单处理和数据库查询是在加载地图视图的控制器函数的单独控制器函数中完成的。maps()函数创建地图,get_markers()根据从mapsView页面提交的表单数据处理数据库查询。

我已经尝试将所有代码从get_markers()控制器函数移到maps()控制器函数中,但当我这样做时,var_dump($query->result());会返回表中的所有内容,而不仅仅是我的查询结果。

我的主要问题是,我需要mapsView页面中数据库查询的结果,但我无法重新加载页面,因为我将丢失地图的所有设置。

该表单位于mapView页面上,是一个标准单选按钮表单,带有一个具有位置值的隐藏字段。提交时,表单会传递一个位置值以及通过单选按钮选择的类型值。

我不确定如何处理这个问题,因为MVC做事方法对我来说是新的,我想知道是否有人能给我指明正确的方向。

我所理解的是,您需要将在模型中检索到的数据传递给视图。

我通过将从Model检索到的数据保存在一个数组中并将其传递给视图来实现这一点,如下所示

控制器内

function map(){
     $this->load->model('maps');
     $data['marker_details']=$this->maps->get_marker_details();
     $this->load->view('map_view',$data);
   } 

传递的数据将作为一个新变量接收,例如控制器中的$data['abc']可以在视图中作为$abc访问

因此,您的所有标记都可以在map_view 中作为$marker_details访问

希望这是需要的