Javascript CGI文件写入文件,仅具有读取权限
每当单击按钮时,我的web服务器都会发送xmlhttprequest来编写JSON文件。但是,文件在写入时仅具有读取权限。此外,这仅在web服务器请求执行cgi脚本时发生。但是,如果我尝试自己从命令行执行此cgi脚本,则该文件将同时具有读写权限。是否有任何方法可以允许web服务器使此cgi脚本以完全权限写入文件 根据要求,下面是我的代码部分,它发送xmlhttprequest并获取/json文件Javascript CGI文件写入文件,仅具有读取权限,javascript,json,permissions,apache2,Javascript,Json,Permissions,Apache2,每当单击按钮时,我的web服务器都会发送xmlhttprequest来编写JSON文件。但是,文件在写入时仅具有读取权限。此外,这仅在web服务器请求执行cgi脚本时发生。但是,如果我尝试自己从命令行执行此cgi脚本,则该文件将同时具有读写权限。是否有任何方法可以允许web服务器使此cgi脚本以完全权限写入文件 根据要求,下面是我的代码部分,它发送xmlhttprequest并获取/json文件 <script> function loadXMLdoc() {
<script>
function loadXMLdoc() {
var xmlhttp = new XMLHttpRequest();
var url = "/cgi-bin/run.cgi"
var id = document.getElementById("inputId").value;
var mutation = document.getElementById("inputMutation").value;
var position = document.getElementById("inputPosition").value;
var json;
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status==200) {
$.getJSON("data.json",function(result){
$.each(result, function(i, field){
output = "<h1>Output<h1>"
for (var f in field){
output+="<p>Identifier: " + field[f]["value"]+" Position: "+field[f]["position"]+" Mutation: "+field[f]["mutation"]+"</p>"
}
});
});
document.getElementById("test_container").innerHTML = output
}
}
xmlhttp.open("GET", url+"?id=" + id + "&mutation=" + mutation + "&position=" + position, true);
xmlhttp.send()
}
</script>
chmod 0777 cgiscript
将为每个人设置读/写/执行权限。嗯,是的,我知道chmod命令。然而,这个JSON文件经常被重写,这意味着我每次都必须对它进行chmod。我用chmod 777保存了一次,但当cgi脚本再次执行时,它再次创建了一个新的、锁定的权限文件。@JonathanM我刚刚添加了发送请求并打开JSON的代码file@JonathanM以及run.cgi中打开文件进行写入的部分和$.getJSON()
。只需执行$.getJSON
,而不创建xmlhttprequest对象。$.getJSON
将为您的应用程序创建它。就像现在一样,你正在加倍关注对象。
write_file = open("%s/data.json" %(root_directory), 'w')
write_file.write('{"results": [\n')
for i,result in enumerate(results):
write_file.write('\t{"value": "%s", "mutation": "%s", "position": "%s"}' % (result["value"], result["mutation"], result["position"]))
if i != len(results) - 1:
write_file.write(",")
write_file.write("\n")
write_file.write("]}")
write_file.close()