![](/img/trans.png)
[英]Convert a string (variable ) to object with JSON.parse , error unexpected token
[英]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.