Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用PHP将本地存储数据保存到服务器_Javascript_Php_Local Storage - Fatal编程技术网

Javascript 使用PHP将本地存储数据保存到服务器

Javascript 使用PHP将本地存储数据保存到服务器,javascript,php,local-storage,Javascript,Php,Local Storage,我正在尝试使用localstorage在jquery中实现“稍后保存”功能。其想法是将每个表单事件保存在localstorage中,并使用按钮将其同步并保存到服务器 我设法将表单数据保存到localstorage并检索所有保存的localstorage。目前,我正在努力解决如何使用PHP仅向服务器提交特定值的问题 下面是我将表单数据保存到本地存储的代码 $('#systemInventory').on("submit", function(e) { e.preventDefaul

我正在尝试使用localstorage在jquery中实现“稍后保存”功能。其想法是将每个表单事件保存在localstorage中,并使用按钮将其同步并保存到服务器

我设法将表单数据保存到localstorage并检索所有保存的localstorage。目前,我正在努力解决如何使用PHP仅向服务器提交特定值的问题

下面是我将表单数据保存到本地存储的代码

$('#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“,”添加“,”
类似这样的问题我不知道。我已经回答了您提出的具体问题。如果您还有其他问题,如:如何提取某些数据,或如何解析数据以便发送,我将发布一个单独的问题。