Javascript 使用PHP将本地存储数据保存到服务器
我正在尝试使用localstorage在jquery中实现“稍后保存”功能。其想法是将每个表单事件保存在localstorage中,并使用按钮将其同步并保存到服务器 我设法将表单数据保存到localstorage并检索所有保存的localstorage。目前,我正在努力解决如何使用PHP仅向服务器提交特定值的问题 下面是我将表单数据保存到本地存储的代码Javascript 使用PHP将本地存储数据保存到服务器,javascript,php,local-storage,Javascript,Php,Local Storage,我正在尝试使用localstorage在jquery中实现“稍后保存”功能。其想法是将每个表单事件保存在localstorage中,并使用按钮将其同步并保存到服务器 我设法将表单数据保存到localstorage并检索所有保存的localstorage。目前,我正在努力解决如何使用PHP仅向服务器提交特定值的问题 下面是我将表单数据保存到本地存储的代码 $('#systemInventory').on("submit", function(e) { e.preventDefaul
$('#systemInventory').on("submit", function(e) {
e.preventDefault(); // prevent the form from attempting to send to the web server
let $inputs = $('#systemInventory :input');
let values = {};
$inputs.each(function() {
values[$(this).attr("name")] = $(this).val();
});
let title = 'systemInventory' + $.now();
localStorage.setItem(title, JSON.stringify(values));
$('#systemInventory')[0].reset();
mdtoast('Successfully Saved',
{ type: mdtoast.INFO });
});
function allStorage() {
let values = [],
keys = Object.keys(localStorage),
i = keys.length;
while ( i-- ) {
values.push( localStorage.getItem(keys[i]) );
}
return values;
}
这是我用来从本地存储检索数据的一个
$('#systemInventory').on("submit", function(e) {
e.preventDefault(); // prevent the form from attempting to send to the web server
let $inputs = $('#systemInventory :input');
let values = {};
$inputs.each(function() {
values[$(this).attr("name")] = $(this).val();
});
let title = 'systemInventory' + $.now();
localStorage.setItem(title, JSON.stringify(values));
$('#systemInventory')[0].reset();
mdtoast('Successfully Saved',
{ type: mdtoast.INFO });
});
function allStorage() {
let values = [],
keys = Object.keys(localStorage),
i = keys.length;
while ( i-- ) {
values.push( localStorage.getItem(keys[i]) );
}
return values;
}
下面是我试图在PHP存储中保存特定数据的方法
$.each(allStorage(), function (key, value) {
let data = JSON.parse(value);
console.log(data);
$.ajax({
url: "sync.php",
method: 'POST',
data: {data: data},
success: function (response) {
console.log(response);
},
error: function (response) {
console.log(response);
}
});
});
我的php代码是
if (isset($_POST['data'])){
foreach ($_POST['data'] as $key => $value){
$data[] = array(
$key => $value
);
}
$dataForm = call_user_func_array('array_merge', $data);
print_r($dataForm);
// print_r($data);
}
当控制台记录保存的所有本地存储时,我得到了以下结果
当单击同步时,服务器上正在发送的同步出现此问题
我真正想做的是,当我向php提交localstorage数据时,它会自动形成特定的数组,例如
$data = array(
'type'=>'product',
'beginning'=>1,
'delivery'=>1
);
问题是
allStorage()
函数返回的是一个索引数组,而不是一个对象,因此只能从本地存储中获取值,也不能获取键
这意味着,当您将数据传递给PHP时,它将以索引而不是关联数组的形式结束,即没有键。例如,如果对接收到的数据运行print\r()
,这一点就很明显了
allStorage()
可以固定(并简化)为:
函数allStorage(){
let data={};//看起来似乎也不需要each循环,目前它进行了多个ajax调用。因此,我将修改我的allstorage,使其看起来像这样?它的返回值是什么?是否可以仅获取特定数据?因为我返回的是不必要的数据,就像我只想返回包含storedata:{}的对象一样
ProductInventory 1559037527236:“{”类型“:”产品“,”用户名“,”storeBookingSchedId“,”产品id“:”1374“,”开始“:”1“,”交货“,”1“,”结束“:”1“,”承购“:”1“,”平均承购“:”0.14“,”库存水平天数“:”7.00“,”添加“,”
类似这样的问题我不知道。我已经回答了您提出的具体问题。如果您还有其他问题,如:如何提取某些数据,或如何解析数据以便发送,我将发布一个单独的问题。