我正在使用电子构建桌面应用。我想保留所有最近打开的文件的列表,为此我使用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文件没有变化。重新加载页面并没有改变任何内容。
答案 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);
}
但是,这需要您使用节点文件系统包。