在我的代码中,我成功使用了这个结构:
$.getJSON('Json_users_templates/SO_example.json', function(data) {
});
从本地.json文件获取JSON数据到对象。
现在我需要一些代码将更改的对象写入另一个本地.json文件..
我尝试使用如下代码:
$.ajax
({
type: "GET",
dataType : 'json',
async: false,
url: 'http://your.host/save_json.php',
data: { data: JSON.stringify(eventsholded) },
success: function () {alert("Thanks!"); },
failure: function() {alert("Error!");}
});
和.php-reciever
<?php
$myFile = "general.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["data"];
fwrite($fh, $stringData);
fclose($fh)
?>
但它不起作用,firefox在.php文件中显示错误..
我只需要编写像
这样的json对象var jsondata = {
name : "bobby",
age: "77"
};
到.json文件..我可以不使用PHP吗?我应该向output.json添加任何内容以使其接受新数据吗?
答案 0 :(得分:0)
浏览器JavaScript无法将文件写入您的服务器。
这意味着如果您想要写入自己的服务器,则必须使用AJAX和一些服务器端语言(PHP,ASP.net等)。
浏览器在网页上对Javascript进行沙盒处理,这样他们也无法将文件写入用户计算机。您可以做的是向浏览器发送运行时生成的文件,就好像用户点击了链接,然后用户可以手动保存文件。新的HTML5 Filewrite API 可能有效,但它很新,大多数浏览器还不支持它。
答案 1 :(得分:0)
创建数据:URI,基本上我是这样做的:
1)将所有内容放入字符串中,即可使用
content = JSON.stringify(YOUR_JSON)
2)构建数据URI:
uriContent = "data:application/json," + encodeURIComponent(content)
根据浏览器类型等,会有长度限制。使用encodeURIComponent编码Base64(atob
/ btoa
)可能会提高效率。
3)打开一个新窗口并将其“重定向”到此URI提示下载位置:
newWindow = window.open(uriContent, 'JSON');
就是这样。
答案 2 :(得分:0)
正确的方法是使用 HTML5 FileWriter API 在本地编写文件,
我有一个方便的代码,可以使用相同的console.log
方式使用,
虽然它确实保存了.json文件,但它将询问你在哪里保存它。
试一试。
// for JSON debugging (saving to files)
(function(console) {
console.save = function(data, filename) {
if (!data) {
console.error('Console.save: No data');
return;
}
if (!filename) {
filename = "console.json";
}
if (typeof data === "object") {
data = JSON.stringify(data, undefined, 4);
}
var blob = new Blob([data], {type:"text/json"});
var e = document.createEvent("MouseEvents");
var a = document.createElement("a");
a.download = filename;
a.href = window.URL.createObjectURL(blob);
a.dataset.downloadurl = ["text/json", a.download, a.href].join(":");
e.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
}
})(console);
然后称之为:
var some_json = {foo:2};
console.save(some_json,"newfile.json");
<强>更新强>
显然,HTML5文件系统API 被视为死 。
2014年4月,在public-webapps上公布了Filesystem API规范应被视为已失效。