使用AJAX发送javascript对象

时间:2016-06-20 09:44:48

标签: javascript php ajax session

我正在构建一个用户可以绘制图形的平台。 为了做到这一点,我使用Chart.js,每次创建图形时,我都会在javascript数组中保存这个实例(一个javascript对象)。

我想要做的是使用AJAX将该实例数组保存在PHP会话变量中,以便用户稍后可以检索其配置。

根据我的理解,通过AJAX发送到PHP的Javascript对象将转换为PHP数组格式,返回的值将取决于我们期望的“dataType”(json,html,xml ...)

但是,我想要检索的是与我的图形实例完全相同的Javascript数组,以便重新实例化它们,而不是“转换后的格式”。

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

你几乎没有选择:

  1. AJAX + PHP会话+使用php生成内容(纯js,cookies,localStorage)
    • 会话在浏览器关闭时结束
    • 很多代码编写
  2. localStorage的
    • 关闭浏览器时会删除存储
    • 最安全,最简单
  3. 缓存
    • 您有失效日期
    • 您需要提供有关使用Cookie的消息
    • 可以使用PHP和JS
    • 生成cookie
  4. 您可以提供生成图表的链接/代码。我这样做,用户只需发送链接到他的邮件,他就可以随时重新创建。

答案 1 :(得分:0)

如果你想绝对肯定,你从PHP获得相同的对象(没有转换),你可以将它序列化为一个字符串(JSON.stringify(object)),然后再解析它。

这是一个解决方案:

JavaScript(发送数据):

var data = [
    { "abc": "def" },
    { "ghi": "jkl" }
];

$.ajax({
    "url": "http://localhost/savedata.php",
    "method": "POST",
    "data": {
        "list": JSON.stringify(data)
    }
});

PHP(savedata.php):

<?php
    session_start();

    $_SESSION['data'] = $_POST['list'];
 ?>

PHP(getdata.php

<?php
    session_start();
    header("Content-Type: application/json");

    echo $_SESSION['data'];
?>

JavaScript(接收数据):

var data = [];

$.ajax({
    "url": "http://localhost/getdata.php",
    "method": "GET",
    "success": function(response) {
        data = response;
    }
});