【问题标题】:Passing data from php to ajax将数据从php传递到ajax
【发布时间】:2015-12-12 14:57:58
【问题描述】:

我正在创建一个 Google 地图应用程序。我需要使用 Ajax 从数据库加载位置数据,因此我可以每 x 秒显示一次这些数据。我正在使用 CodeIgniter/PHP。这是我得到的:

    <!DOCTYPE html>
    <html>
        <head>
             <title>Simple Map</title>
            <meta name="viewport" content="initial-scale=1.0">
        <meta charset="utf-8">
        <style>
            html, body {
                height: 100%;
                margin: 0;
                padding: 0;
            }
            #map {
                height: 100%;
            }
        </style>
    </head>
    <body>
        <div id="map"></div>
        <script>
            var map;
            function initMap() {
                map = new google.maps.Map(document.getElementById('map'), {
                    center: {lat: -34.397, lng: 150.644},
                    zoom: 8
                });


                httpCall();
            }

            function httpCall($http) {
                $http({
                    method: 'GET',
                    url: '<?php echo site_url('User/marks') ?>',
                    data: data,
                    dataType: "json"
                })
                        .success(function (markers) {
                            for (var i = 0, len = markers.length; i < len; ++i) {
                                var myLatLng = {lat: markers[i].lat, lng: markers[i].lng};

                                var marker = new google.maps.Marker({
                                    position: {
                                        lat: parseFloat(markers[i].lat),
                                        lng: parseFloat(markers[i].lng)
                                    },
                                    map: map
                                });
                            }
                        })
            }

        </script>
        <script src="https://maps.googleapis.com/maps/api/js?callback=initMap"
        async defer></script>
    </body>
</html>

用户/标记功能是:

function marks() {
    echo json_encode($this->user_model->get_marks());
}

user_model 获取标记函数为:

        function get_marks() {
            $sql = "select lat,lng 
from tbl_locations";
            $query = $this->db->query($sql);
            $result = $query->result();
            return $result;
        }

我的错误是:

ReferenceError: data is not defined

显然我传递数据不正确,但正确的方法是什么?

【问题讨论】:

  • 您的回调函数获取数据,但您引用了标记。将您的成功从功能(数据)转变为功能(标记)
  • 您的代码中有很多错误。变量(数据、标记、$http)不对齐。看起来代码可能是从多个地方复制的。请在继续之前对您尝试使用的技术进行更多研究。

标签: php jquery ajax google-maps


【解决方案1】:

您的成功回调函数采用data,但您引用markers

将您的 .success(function(...){})function(data) 更改为 function(markers)

您的 $http 构造中还有对data 的未定义引用。我不知道这是从哪里来的。

**编辑:**

function httpCall($http) {
            $http({
                method: 'GET',
                url: '<?php echo site_url('User/marks') ?>',
                data: data, //This is the issue right here
                dataType: "

在这个结构中,':' 之前的data 是一个属性。 ':' 后面的 data 是一个变量。 data 变量从不声明。要获得更易于维护/可读的代码,您实际上应该重命名 data 变量,以便清楚。

例如,

var dataToSendToServer = { } //declare an empty object

然后更新你的 httpCall 方法:

function httpCall($http) {
            $http({
                method: 'GET',
                url: '<?php echo site_url('User/marks') ?>',
                data: dataToSendToServer,
                dataType: "json"
            })

【讨论】:

  • 我编辑了我的代码和原始帖子。但我仍然得到同样的错误。 “数据未定义”
  • 您还在 $http 以上数据类型中引用了未定义的datadata: *data*.
  • 抱歉,将“数据:数据”替换为“数据:数据”?谢谢你的帮助
猜你喜欢
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-15
  • 2020-08-09
  • 1970-01-01
相关资源
最近更新 更多