javascript - js obj -> json 文件(ajax、php)

标签 javascript php json ajax

我目前收到 200 绿色响应,但是我的数据仍未写入我的 json 文件(即它仍然是空白)

JavaScript:

$(function() {
    $('form#saveTemp').submit(function() {
        let savdAta = JSON.stringify($('form#saveTemp').serializeObject());
        //let tempName = savdAta.styleName;
        console.log(savdAta);
        //console.log(JSON.stringify($('form#saveTemp').serializeObject()));

        $.ajax({
          url: './php/data.php',
          type: 'POST',
          contentType: "application/json",  
          data: {
              template: savdAta
          },
          success: function(msg) {
              console.log('data sent to php file, but..');
          }               
        });

        return false;
    });
});

控制台中来自 savdAta 的数据采用以下格式:

{"styleName":"","fillType":"none","fillTrans":"0"}

PHP:

<?php

header('Content-Type: application/json');

if (!isset($_POST['savdAta']) && !empty($_POST['savdAta'])) {
    $savdAta = $_POST['savdAta'];

    $jsonObject = json_encode($savdAta);
    file_put_contents('./data.json', $jsonObject);
}

更新:现在我有以下内容,没有错误,但我的 .json 文件仍然是空白:

<?php

if (!empty($_POST['template'])) {
    $savdAta = $_POST['template'];

    file_put_contents('./data.json', $savdAta);
}

最佳答案

您的 POST 变量是 template,只有在未设置且不为空时才执行,这不是您想要的,并且无论如何都不会计算为 true:

//Not needed
//header('Content-Type: application/json');

if (!empty($_POST['template'])) {
    $savdAta = $_POST['template'];

    //This is already JSON
    //$jsonObject = json_encode($savdAta);
    file_put_contents('./data.json', $savdAta);
}

关于javascript - js obj -> json 文件(ajax、php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60747666/

相关文章:

javascript - 在逻辑 block 之前引入新的 If 语句时如何构建代码

javascript - 与声明常规类相比,声明函数类有什么好处

PHP:如果 $url 包含空格,imagecreatefromjpeg($url) 不起作用?

php - 从具有多行的关系表中获取数据

php - 在深度嵌套数组中查找特定键的最低值

mysql - 如何修复无效/剥离的 json?

Json4s:转换为 java.sql.Timestamp 不起作用

javascript - 处理 mdl 表复选框

javascript - 使用 Javascript 将数组项相乘

php - 将压缩后的数据编码为json字符串