操作API AJAX JSON响应并将其传递到另一个页面的最佳方法是什么



我想我对你们来说很艰难。或者至少这对我来说很艰难。我一直在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的一定数量的调用。这就是为什么我尝试用这种方式。

我想说的是,我最初想做的是通过使用vehicle-list.php中的函数,每24小时获得一次JSON响应,将响应保存为var jsonMaintenance = response;中的变量,然后每次单击单元号时只访问数组的某些部分。但是,我无法访问任何其他页面中的变量。我写了很多测试文件,试图调用jsonMaintenance,但都没有成功,所以我一直试图将其作为文本文件保存到服务器,但我也没能弄清楚。

在解释了以上所有内容之后。我的问题是:

如何最好地操作这些数据以实现我想要实现的目标?什么是最好的标准?上面的代码是调用我要做的数据的正确方式吗?

当我在Stack Overflow上搜索时,似乎没有一个既定的标准来实现这些。我希望尽可能高效。

谢谢你抽出时间。

从api调用中获取数据后,有很多方法可以通过网站传递数据,最好的方法是将这些信息存储在数据库中,并以任何您想要的方式调用它,只要您使用php,您就可以这样做,您可以将其存储到sql或访问,若您不想将这些信息存储在类似sql或access的数据库中,那个么最好的方法是将其存储到localStorage中,并随时调用它。如果你想更好地解释发布一个返回数据的示例,我将简要地向你展示如何做到这一点。

以本地存储方式存储项目,

localStorage.setItem('key', 'value');

要从本地存储使用中回调项目,请使用

var somevar = localStorage.getItem('key')

要从本地存储使用中删除特定项目,

localStorage.removeItem('key')

要清除保存到本地存储使用的所有项目,

localStorage.clear()

请注意,将数据存储到本地存储仅在您使用的工作站

我会这样做。

  1. 使用您选择的服务器端语言从API调用维护列表,在您的情况下,该语言似乎是PHP。假设脚本名为:get-list.php。这可以由运行get-list.php的cron作业触发,该作业的间隔限制为允许您为该API执行的特定调用量。或者,如果您无法创建cron作业,则使用AJAX-调用触发相同的get-list.php(例如jQuery.get('sld.tld/get-list.php')-在这种情况下,get-list.php必须确定是否是调用API的正确时间)。

  2. 现在您已经有了数据,可以根据需要进行准备,并将其作为JSON字符串存储在您选择的文本文件或数据库中。如果我说得对,你会为每辆车都有一个特定的数据集,这些数据集必须由一个id(你将其命名为"单元号")来识别,所以你的JSON看起来有点像:{"unit1": { property1: "val1", property2: "val2" }, "unit2": { property1: "valXYZ", property2: "valABC" }}或类似。

  3. 现在,当您从vehicle-list.php链接到vehicle-info.php时,您可以这样做:<a href="sld.tld/vehicle-info.php?id=unit1">ancor</a>或类似的操作。当然,您也可以使用AJAX获取数据,重要的是向vehicle-info.php提供相应的单元号(或者更好地说是id),然后您就可以开始了。

  4. vehicle-info.php现在已经具备了渲染页面的所有功能,即存储在文本文件或数据库中的完整数据集和id(单元号),以知道要提取整个数据集的哪个部分。

我想给你这种不同的方法,因为根据我的经验,这应该会更好。如果您在服务器端工作(例如PHP),则您具有写入权限,而JavaScript客户端则不是这样。性能也不是什么大问题。例如,如果在get-list.php级别对数据集进行大量操作,这就不是问题。它可以运行几分钟,一旦完成,它就会存储现成的数据,使其静态可用,而不会对性能产生任何进一步的影响。

希望它能有所帮助!

如果我遇到类似的问题,我会将数据存储在我自己的数据库中,并从那里调用它,考虑到你只(愿意/abe/reallow)很少从API请求数据,但需要非常频繁地对数据进行操作(每当有人点击你的应用程序上的特定车辆时),这似乎是最好的做法。

因此,与其在客户端查询数据,不如从服务器调用数据,将其存储在服务器上,并让客户端对这些数据进行操作。

相关内容

最新更新