【发布时间】:2020-03-06 23:32:18
【问题描述】:
我想我对你们来说很难。或者至少这对我来说很难。我一直在 Stack Overflow 中寻找最好的方法,每个提出问题的人都得到了不同的回应。
我有这段代码正在访问 API 并调用车队中所有车辆的维护列表。
function getMaintenanceList() {
var settings = {
"url": "API URL HERE",
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer token here"
},
};
$.ajax(settings).done(function (response) {
// The response the API sends is a JSON object.
// It is an array.
var jsonMaintenance = response;
var parsedJson = JSON.stringify(jsonMaintenance);
//Left over code from when I was trying to
//pass the data directly into the other page
// I was unable to do so
//return jsonMaintenance;
//Left over code from when this was in a PHP file
//and I was posting the stringified response to the page
// for testing purpose
//I had to disable CORS in Google Chrome to test the response out
//console.log(jsonMaintenance);
//document.getElementById("main").innerHTML = parsedJson;
});
};
上面的代码运行良好。我在这里尝试做的是将字符串化的响应写入文件。将该文件保存在服务器中。使用 JavaScript 从另一个页面调用它并将其保存为 JavaScript 中的对象,使用 JSON.parse() 对其进行解析,然后提取所需的信息。
这里解释了我为什么要这样做。当我从 API 调用维护列表时,我会从 API 获取整个维护列表,但我需要能够仅显示列表中的部分信息。
在一页上,我们将它命名为vehicle-list.php,在上面我有我们车队中所有车辆的列表。他们都有分配给他们的单位编号。当我单击此页面上的单元号时,它将带我到另一个页面,其中包含有关车辆的更多信息,例如 VIN 号、车牌等。我们将此页面称为 vehicle-info.php。我们使用这个页面来获取所有车辆的信息,换句话说,当我们点击vehicle-list.php 上的不同单元号时,它总是会将我们带到vehicle-info.php。我们只在进入页面时更新 DOM。
我只想在页面中包含特定于每个车辆单元的信息以及 DOM 中的其他信息。而且我只想从 API 调用一次信息,因为我仅限于对该 API 的一定数量的调用。这就是我尝试这样做的原因。
我会说,我最初想要做的是每 24 小时通过使用 vehicle-list.php 中的函数将响应保存为变量,如上所示 var jsonMaintenance = response;,然后只访问某些部分每次单击单元号时,数组的值。但是,我无法访问任何其他页面中的变量。我编写了许多测试文件,试图调用jsonMaintenance,但没有成功,所以我一直试图将它作为文本文件保存到服务器,但我也无法弄清楚。
在解释了以上所有内容之后。我的问题是:
我如何最好地操纵这些数据来完成我想要完成的事情?最好的标准是什么?上面的代码甚至是为我正在尝试做的事情调用数据的正确方法吗?
当我在 Stack Overflow 上搜索时,似乎没有一个完成任何这些的标准。我希望尽可能高效。
感谢您的宝贵时间。
【问题讨论】:
-
如果您只想进行一次服务器调用并跨多个页面共享信息,并且您不希望浏览器记住这些信息,请使用
$_SESSION。否则我只会使用 JavaScriptlocalStorage。我会使用 PHP 处理json_encode()ed 数据并让 JavaScript 准备好接受 AJAX 信息以更新 DOM。 -
你可以链接一个例子吗?我从来没有听过或看过你在说什么,我很想了解更多。有一个新的领导是令人兴奋的。
-
没有固定的标准,因为根据您的需要有多种方法可以做到这一点。例如,某些信息太敏感而无法保留在客户端,尽管大多数用户永远不会注意到它或知道它的重要性。如果它是微不足道的数据,那么我建议从数据库中提取并将其缓存在 localStorage 中。
-
session_start(); if(isset($_POST['getData']){ /* query to $queryObj */ $_SESSION['maint'] = $queryObj; } if(isset($_SESSION['maint'])){ echo json_encode($_SESSION['maint']); }还有更多。 -
如果数据不敏感,那么正如@StackSlave 所提到的,请查看Web Storage API。 Hth
标签: javascript php jquery json ajax