让我们说我有一个简单的PHP回显&/打印:
[['Staff', 'somewhere', 'map-marker-icon.png'], ['chinese', 'London', 'map-marker-icon.png'], ['Trade', 'essex', 'map-marker-icon.png'], ['Fare', 'london', 'map-marker-icon.png'], ]
我使用AJAX
在我的html页面上获得了这个PHP回应,并使用localstorage
将其存储在stringify.JSON
中,如下所示:
$.ajax({
type: "POST",
url: "my-php-page.php",
data: dataString,
crossDomain: true,
cache: false,
beforeSend: function(){},
success: function(data){
localStorage.setItem('mapMarkers', JSON.stringify(data));
}
});
我得到了存储在localstorage中的AJAX响应(数据),我可以看到存储它。
现在,我尝试做的下一步是获取相同的localstorage值并将其用作javascript对象。
所以我继续在本地存储设置如上所述之后在我的html页面中这样做:
var locations = JSON.parse(localStorage.getItem('mapMarkers'));
alert(locations);
我遇到的问题是当我alert(locations);
时,我在警告框中显示null
!
但我可以看到本地存储存储在我的浏览器中!
这是我在localstorage中看到的:
值:
"\r\n[['Staff', 'somewhere', 'map-marker-icon.png'], ['chinese', 'London', 'map-marker-icon.png'], ['Trade', 'essex', 'map-marker-icon.png'], ['Fare', 'london', 'map-marker-icon.png'], ]
JSON
0
"
"
1
"\n"
2
"["
3
"["
4
"'"
5
"S"
6
"t"
7
"a"
etc etc......
"]"
有人可以就这个问题提出建议,因为我花了两天多的时间试图解决这个问题,但根本没有运气。
任何帮助都将不胜感激。
修改
好吧,它似乎回到了绘图板,但我不断更新这个问题,使它成为一个很好的教程,就像其他人一样:
好的,所以我试着改变我的PHP:
$return_arr = array();
$sql = "SELECT * FROM restaurants";
if ($result = mysqli_query($db, $sql )){
while ($row = mysqli_fetch_assoc($result)) {
$row_array['id'] = $row['id'];
$row_array['location'] = $row['location'];
$row_array['name'] = $row['name'];
$row_array['type'] = $row['type'];
array_push($return_arr,$row_array);
}
}
mysqli_close($db);
echo json_encode($return_arr);
打印出类似这样的内容:
[{"id":"1","location":"Fitzrovia","name":"Staff Welfare","type":"indian"},{"id":"2","location":"Soho, London","name":"perfect chinese","type":"chinese"},{"id":"3","location":"Southend-on-sea, essex","name":"Fare Trade","type":"kebab"},{"id":"5","location":"Soho, london","name":"Fare Trade","type":"kebab"}]
我注意到的第一件事是我得{}
而不是[]
....
主要是因为我需要我的Javascript对象看起来像这样:
[['Staff', 'somewhere', 'map-marker-icon.png'], ['chinese', 'London', 'map-marker-icon.png'], ['Trade', 'essex', 'map-marker-icon.png'], ['Fare', 'london', 'map-marker-icon.png'], ]
对于所有" id":...," location":..等等......
我不知道我是否可以在我的Javascript中使用{}!所以,任何有关这方面的建议都是宏伟的。
我做的第二件事就是改变了我的html中的AJAX代码:
$.ajax({
type: "POST",
url: "my-php-page.php",
data: dataString,
crossDomain: true,
cache: false,
beforeSend: function(){},
success: function(data){
localStorage.setItem('mapMarkers', JSON.stringify(data));
var locations = JSON.parse(localStorage.getItem('mapMarkers'));
alert(locations);
}
});
这是我在ajax成功的警告框中得到的结果:
[{"id":"1","location":"Fitzrovia","name":"Staff Welfare","type":"indian"},{"id":"2","location":"Soho, London","name":"perfect chinese","type":"chinese"},{"id":"3","location":"Southend-on-sea, essex","name":"Fare Trade","type":"kebab"},{"id":"5","location":"Soho, london","name":"Fare Trade","type":"kebab"}]
我不认为这是正确的,因为它不是JSON.parse(...);串!
任何有关如何从这里出发的建议都将不胜感激。