Javascript 当我使用文件内容时,文件被清空
主要问题在评论中得到了解决,尽管其中一个奖金问题仍然悬而未决,另一个的解决方案可能需要一些改进 所有这些都发生在webhosting服务上,文件夹结构如下所示: JavaScript和PHP文件位于/public\u html/中,JSON位于/public\u html/data/中 在我的JS代码中,我发送了一个POST请求,其中包含JSON文件的一些数据:Javascript 当我使用文件内容时,文件被清空,javascript,php,arrays,json,ajax,Javascript,Php,Arrays,Json,Ajax,主要问题在评论中得到了解决,尽管其中一个奖金问题仍然悬而未决,另一个的解决方案可能需要一些改进 所有这些都发生在webhosting服务上,文件夹结构如下所示: JavaScript和PHP文件位于/public\u html/中,JSON位于/public\u html/data/中 在我的JS代码中,我发送了一个POST请求,其中包含JSON文件的一些数据: console.log(objdata.buildings[0].coords); var params = JSON.stringi
console.log(objdata.buildings[0].coords);
var params = JSON.stringify(objdata);
if (objdata.buildings[0].coords != " "){
$.ajax({
type: "POST",
data: params,
url: "writecoords.php",
success: function(data){
console.log(params);
console.log(data);
console.log("AJAX success");
},
error: function(){
console.log("failed to send POST");
alert("error");
}
});
}
PHP文件:
如您所见,我在每个可能的点执行检查,以查看我是否实际处理非空数据——我记录有问题的键的值,AJAX请求仅在更改时发送,我记录发送的数据,我记录PHP文件接收和解码的数据
我还检查文件是否可写,以避免可能的权限问题,然后才尝试写入该文件。该文件为空,我在控制台中得到以下输出
- params是我的JSON对象,作为一行李>
- 数据是:我的JSON对象是一行,在每个新对象和所有转换为\u格式的西里尔文之前都有换行符,“未写入任何内容!”,“PHP写入成功”李>
- “AJAX成功”
public\uhtml/test.txt
和test.txt
作为文件名
我尝试使用locks FILE|u APPEND | LOCK_EX的组合,但两个文件都没有发生任何更改
我的问题是:
后续问题应单独列为一节: coords是一个三维数组
[
[[x1,y1],[x2,y2],...]]
]
其中外部阵列最多包含两个阵列。第一个阵列包含外部多边形的点,第二个阵列(如果存在)包含用作剪切的内部多边形的点
所讨论的代码试图使提交到strogi.json的coords数组至少对一个对象有效
总的来说,我想做的是
- $.getJSON()保存数据/strogi.json文件
- 在.done()中遍历建筑物[]中的对象数组 回拨
- 对于每个对象,检查“coords”是否为“”(默认值)
[[[[x1,y1],[x2,y2]]
(现在的传递方式)更改为类似的内容(pastebin,因为即使使用4个空格缩进,也没有代码格式)
让它工作,对吗?我该怎么做?通过使用两个for()
循环遍历JS中的数组,并将toString()
应用于每个坐标,一定有更好的方法解决了部分问题您正试图
将内容放入解码对象(可能是stdClass)上file\u put\u contents
需要一个字符串、数组或流作为第二个参数。@ccKep将改为“$newJSON.”工作吗?或者有没有一种方法可以在$newJSON上使用impolde()来向文件中写入有意义的JSON对象?如果不是,我应该使用fOpen、fWrite和fClose吗?@ccKep四处搜索了一下,编写对象的方法似乎是通过serialize()
来编写fWrite()
和file\u put\u contents()
,这将对象转换成,而不是JSON。这是无法逃避的吗?从技术上讲,我可以切换到通过另一个PHP文件获取JSON数据,这将反序列化()
存储的混乱并将其传递,但我非常希望以可读的格式保存它,以便以后直接编辑。如果您的JavaScript发布JSON字符串,只需将该字符串写入文件即可。如果您只想编写一些JSON文件内容('data/strogi.JSON',$newJSON),则无需对其进行解码如果您的$newJSON
是一个JSON字符串,那么code>应该可以正常工作-无需序列化任何内容。