如何在Firebase Cloud函数中从本地存储中获取数组



将localStorage发送到服务器后,即使客户端中包含值,const arrayOrders也显示为空。

我试过用这种方法来做,但不起作用。

以下是我在服务器端和客户端的请求处理代码。

怎么了?

在服务器端:

exports.wip = functions.https.onRequest((req, res) => {
cors(req, res, () => {
const url = `${req.protocol}://${req.get('host')}/work-in-process`;
const tokenId = req.get('Authorization').split('Bearer ')[1];
const arrayOrders = req.headers['service']; // {}
const wipReq = JSON.stringify({
operator: req.body.uid,
conditions: req.body.status,
service_list: {
orders: [arrayOrders]
}
})
return admin.auth().verifyIdToken(tokenId)
.then((decoded) => {res.redirect(302, url.href)})
.catch((err) => res.status(401).send(err));
});
});

客户端:

$(function() {
'a long time ago user recorded a' localStorage.setItem("service_array", array);
$('.SubForm').on('submit', function(e) {
$.ajax({
type: 'post',
url: 'http://localhost:3000/wip',
data: $(this).serialize(),
success: function(data) {
if (data.status) {
$.ajax({
type: 'get',
url: 'http://localhost:3000/wip',
beforeSend: function(xhr) {
xhr.setRequestHeader('service', localStorage.getItem("service_array"));
},
success: location.href = "http://localhost:3000/wip"
})
}
}
});
e.preventDefault();
});
});

存储对象是简单的键值存储,类似于对象,但它们在页面加载过程中保持不变键和值始终是字符串(请注意,与对象一样,整数键将自动转换为字符串(您可以像访问对象一样访问这些值,也可以使用Storage.getItem()Storage.setItem()方法访问这些值。

发件人:https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API

因此,将数组存储在localStorage中可能会产生混合结果。我建议:

$(function() {
var data = [];
var storeData = JSON.stringify(data);
localStorage.setItem("service_array", storeData);
$('.SubForm').on('submit', function(e) {
$.ajax({
type: 'post',
url: 'http://localhost:3000/wip',
data: $(this).serialize(),
success: function(data) {
if (data.status) {
$.ajax({
type: 'get',
url: 'http://localhost:3000/wip',
beforeSend: function(xhr) {
xhr.setRequestHeader('service', localStorage.getItem("service_array"));
},
success: function(){
location.href = "http://localhost:3000/wip";
}
});
}
}
});
e.preventDefault();
});
});

从您的示例中不清楚array是在哪里定义的。基本上,您可以使用JSON.stringify()$.param()将Array数据转换为可以存储到localStorage的String。根据您的需要,您可以在将String返回到Array时将其转换。

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新