【问题标题】:Can't read json elements from mysql query via ajax无法通过ajax从mysql查询中读取json元素
【发布时间】:2016-07-11 18:21:27
【问题描述】:

我需要在我的地图上添加一些地理标记。 标记在我在 altervista.org 上的 mysql 表中 但是每次我尝试时我的 JavaScript 都会显示 [object Object]...

这里是我的 php 代码:

require('connect.php');
$query = "SELECT latit, longit FROM segnalazioni";
$result = mysql_query($query);
$rows = array();
while ($row = mysql_fetch_assoc($result)){
     $rows[] = $row;
}
echo json_encode($rows);

它返回:

[{"latit":"12.34","longit":"12.34"},{"latit":"56.78","longit":"56.78"},...]

这里是我的 JavaScript:

function addMarker(mapobj) {
    $.getJSON( "http://####.altervista.org/map.php", function( data ) {
        var items = [];
        $.each( data, function( key1 , val1 ) {
            items.push( "<li id='" + key1 + "'>" + val1 + "</li>" );
                //next todo:
                //mapobj.marker([latit, longit]).addTo(map).bindPopup("hi");
            });
        $( "<ul/>", {
            "class": "my-new-list",
            html: items.join( "" )
        }).appendTo( "body" );
    });
}

在我 [body] 的尽头,我只能看到:

[object Object]
[object Object]
[object Object]
...

【问题讨论】:

  • stop using mysql_* functions These extensions 已在 PHP 7 中删除。了解 PDO 和 @987654325 的 prepared 语句@ 并考虑使用 PDO,it's really pretty easy
  • 你有一个对象数组。您的 data 在数组上循环,这意味着 key1 只是 01 等......而 val1 是一个包含您的纬度/经度值的对象,而不是值本身
  • 对于已弃用的功能,我深表歉意……不幸的是,这是一个用于学术目的的项目……

标签: php jquery mysql ajax


【解决方案1】:

根据jquery.each的参数是

  • indexInArray ,值和非键,值

所以代码是:

$(function () {
  var data = [{"latit": "12.34", "longit": "12.34"}, {"latit": "56.78", "longit": "56.78"}];
  var items = [];
  $.each(data, function(indexInArray , value) {
    items.push( "<li id='" + indexInArray + "'>latit: " + value.latit + ' longit:' + value.longit + '  OR '+ JSON.stringify(value) + "</li>" );
    //next todo:
    //mapobj.marker([latit, longit]).addTo(map).bindPopup("hi");
  });
  $( "<ul/>", {
    "class": "my-new-list",
    html: items.join( "" )
  }).appendTo( "body" );
});
&lt;script src="https://code.jquery.com/jquery-1.12.1.min.js"&gt;&lt;/script&gt;

【讨论】:

    【解决方案2】:

    使用这个

    $.each(result, function(key, value){
            $.each(value, function(key, value){
                console.log(key, value);
            });
        });
    

    【讨论】:

    • 好的,它的工作原理......但是......为什么?我尝试更改“从...中选择纬度”中的查询,因此结果在 json 中一次只有一个...但无论如何都不起作用!
    【解决方案3】:

    我还鼓励在发送 JSON 流之前使用标头。告诉 HTTP 响应中发送的内容类型总是好的。使用

    header('Content-Type: application/json');
    

    使用前

    echo json_encode($rows);
    

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      相关资源
      最近更新 更多