0

PHP配列をエコーすると、次のように表示されます

echo json_encode($marray);

画面

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

オンラインjsonフォーマッターでjson_string(上記)をチェックしました...エラーは表示されません。

私は ajax を使用して、この変数 xmlhttp.responseText で json 文字列を取得しています。

その変数を出力すると、php の echo ステートメントと同じように ourput が表示されます。

しかし、上記のjson文字列を(ajax応答を使用せずに)直接コピーしてjavascript変数に貼り付けると、表示されます

[対象オブジェクト]、[対象オブジェクト]、[対象オブジェクト]、[対象オブジェクト]

次に、ドット演算子を使用してデータを取得できます.....

json文字列がphpファイルからの応答としてjs変数に格納されたときに何が起こっているのかわかりません。

これらに関する多くのスレッドがありますが、それでも私の問題を理解できません....JSON.parse()と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 に答える