AJAX POST成功但没有做任何事情

时间:2018-02-25 11:48:50

标签: javascript jquery json ajax electron

我正在使用电子构建桌面应用。我想保留所有最近打开的文件的列表,为此我使用jquery ajax。这是我的代码

// this function is expected to add a file entry to my json file
this.add_recent_file = function(file_id, file_name, date_opened) {
    // Execute the ajax command.
    $.ajax({
        type: 'POST',
        url: './data/recent-files.json',
        dataType: 'json',
        data: {
            id: file_id,
            name: file_name,
            date: date_opened
        },
        success: function() {
            console.log("Success");
        }
    });
}

这是我的示例json文件:

[
    {
        "id" : "1",
        "name": "File.json",
        "date": "24-feb-2018"
    }
]

问题是控制台说'成功'但json文件没有变化。重新加载页面并没有改变任何内容。

3 个答案:

答案 0 :(得分:2)

您可以使用node.js文件系统写入json文件。看看下面的代码。

var fs = require('fs');
var $ = require('jquery');

this.add_recent_file = function (object) {
    $.ajax({
        type: 'GET',
        url: './data/recent-files.json',
        dataType: 'json',
        success: function (files) {
            // append the entry to the array.
            files[files.length] = object;

            // Get JSON string representation of the array.
            var str = JSON.stringify(files);

            // Now write it to the json file.
            fs.writeFileSync(recent_file_url, str);
        },
        error: function () {
            alert('Error updating json file.');
        }
    });
}

答案 1 :(得分:0)

正如@Gerrit Luimstra所说,你需要一个后端,如果你正在使用PHP,你可能会使用这样的东西:

data/update.php
<?php
$id = $_POST['id'];
$name = $_POST['name'];
$dateX = $_POST['date'];

//update database code here

答案 2 :(得分:0)

现在您正在使用AJAX将数据发布到JSON文件,并希望这会更新文件。但事实并非如此。

您可以使用Electron的文件系统将更改写入JSON文件。

在这种情况下,您的功能将变为:

this.add_recent_file = function(file_id, file_name, date_opened) {
    // Create the JSON content
    var data = {
            id: file_id,
            name: file_name,
            date: date_opened
        };

   // If you want to prettify the JSON content
   data = JSON.stringify(data, null, 2);


    // Write it to the file
    fs.writeFileSync('../path/to/recent-files.json', data);

}

但是,这需要您使用节点文件系统包。