簡體   English   中英

想要將JSON字符串傳遞給javascript變量[JSON.parse(),eval()]對我都不起作用,都返回了意外的令牌錯誤

[英]want to pass JSON String to javascript variable [ JSON.parse(),eval()] are not working to me both returning unexpected token error

當我回顯我的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在此變量xmlhttp.responseText中獲取json字符串;

如果我打印該變量,它將顯示與php echo語句中相同的輸出。

但是如果我直接將上面的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>

一個簡單(有效)的測試示例供您參考:

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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM