无法使用AJAX将JSON变量发布到PHP

时间:2015-05-18 21:52:59

标签: php ajax

在第一篇文档中,我将一个填充了数字的JSON字符串添加到localstorage中,如下所示:

$.ajax({
   url: "oyvind_liste.php", 
   data: {aktuelle_verdier: aktuelle_verdier}, 
   dataType: "json",
success: function(result){
   var dataToStore = JSON.stringify(result);
   localStorage.setItem('key', dataToStore);
   }});

然后在另一个文档中,我试图发布从本地存储中检索的JSON字符串,如下所示:

<script>
var data = JSON.parse(localStorage.getItem('key'));
var localData = data.join(", ");

$.ajax({
type: 'post',
       data: {localData: localData}, 
       url: '',
       dataType: "json",
       success: function(result){
       console.log(result)
       }});
</script>

与帖子在同一页面上的PHP尝试获取如下数据:

<?php
$user_id = isset($_POST['localData'])?$_POST['localData']:"";
$values = json_decode($user_id);
var_dump($values);
?>

当我运行var_dump时,我得到Array(),所以实质上它并没有发布任何内容。有谁知道什么出错了?

1 个答案:

答案 0 :(得分:0)

在向JSON的对象参数中发送数组时,您不需要使用$.ajax。只需将数组放在那里,jQuery将对其进行URL编码。

var data = JSON.parse(localStorage.getItem('key'));

$.ajax({
    type: "post",
    data: { localData: data },
    ...
});

然后在PHP中你可以这样做:

$values = isset($_POST['localData']) ? $_POST['localData'] : array();
var_dump($values);

你也可以这样发送JSON:

var json_string = localStorage.getItem('key');
$.ajax({
    type: "post",
    data: { localData: json_string},
    ...
});

然后在PHP中执行:

$values = json_decode(isset($_POST['localData']) ? $_POST['localData'] : '[]');
var_dump($values);