将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时将其转换。
希望能有所帮助。