在localstorage中使用PHP和Javascript JSON.stringify并将其转换为JS对象?

时间:2016-06-11 10:00:11

标签: javascript php jquery json html5

让我们说我有一个简单的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(...);串!

任何有关如何从这里出发的建议都将不胜感激。

0 个答案:

没有答案