0

当我回显我的 php 数组时,它显示如下

回声 json_encode($marray);

展示

{"marray":[{"lat":"12.34","long":"76.35"},{"lat":"13.60","long":"77.34"},{"lat":"14.45" ,"long":"78.70"},{"lat":"12.12","long":"79.47"}]}

我在在线 json 格式化程序中检查了我的 json_string(上图)......它没有显示任何错误。

我正在使用 ajax 来获取此变量中的 json 字符串 - xmlhttp.responseText;

如果我打印该变量,它会显示与 php echo 语句中相同的输出;

但是如果我直接将上面的 json 字符串(不使用 ajax 响应)复制并粘贴到它显示的 javascript 变量中

[对象对象],[对象对象],[对象对象],[对象对象]

然后我可以使用点运算符从中获取数据.....

我不知道当 json 字符串作为 php 文件的响应存储到 js 变量中时发生了什么问题。

关于这些有很多线程,但我仍然无法弄清楚我的问题....JSON.parse() nad eval() 对我不起作用。

我的php编码...

    $sql="SELECT * FROM $tbl_name";
$result=mysql_query($sql);
$length=mysql_num_rows($result);

while($row=mysql_fetch_array($result))
{
$marray[$i] =

array(
"lat" => $row['lat'],
"long" => $row['long']
     );
$i++;
}
$dmarray=array("marray"=>$marray);
echo json_encode($dmarray);

请帮帮我....这个问题看起来很愚蠢,但我花了整整 3 天的不眠之夜

    <script type="text/javascript">
function displayvalue()
{
m="xxx";
     var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {

  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
var h=xmlhttp.responseText;
document.getElementById("data").innerHTML="h";
}
}
xmlhttp.open("GET","array.php?q="+m,true);
xmlhttp.send(null);
}
 </script>
4

1 回答 1

0

一个简单(且有效)的测试示例供您参考:

PHP:

<?php

$datastr = '{"marray":[{"lat":"12.34","long":"76.35"},{"lat":"13.60","long":"77.34"},{"lat":"14.45","long":"78.70"},{"lat":"12.12","long":"79.47"}]}';
$dataarray = json_decode($datastr);
die(json_encode($dataarray));

?>

JavaScript (html):

<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function togetdata(callback) {
    var httpRequest;
    httpRequest = new XMLHttpRequest();

    httpRequest.onreadystatechange = getresponse;
        httpRequest.open('GET', "webpage.php");
    httpRequest.send();

    function getresponse() {
            if (httpRequest.readyState === 4) {
                if (httpRequest.status === 200) {
                    callback(httpRequest.responseText);
                } else {
                    alert("Request Error");
                }
            } else {
        }
    }

}

function objstr(obj) {
    var s = "";
    for (var i in obj) {
        var v = obj[i];
        if (typeof v == "object") {
            v = objstr(v);
            s += i + ":<br>" + v + "<br>";
        } else {
            s += i + ": " + v + "<br>";
        }
    }
    return s;
}

function processdata(resp) {
    var r = JSON.parse(resp);
    var m = document.getElementById("msg");
    m.innerHTML = objstr(r);
}

</script>

</head>
<body>
<button id="ajaxButton" onclick="togetdata(processdata)">To get data</button>

<span id="msg"></msg>
</body>
于 2012-08-16T08:36:27.167 回答