主要问题在评论中得到了解决,虽然其中一个奖励问题仍未解决,其他解决方案可以使用一些改进
所有这些都发生在虚拟主机服务上,文件夹结构如下:
JavaScript和PHP文件位于/ public_html /中,JSON位于/ public_html / data /。
在我的JS代码中,我发送了一个POST请求,其中包含我的JSON文件的一些数据:
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文件:
<?php
function debug_to_console($data){
if(is_array($data) || is_object($data))
{
echo("\n".json_encode($data));
} else {
echo("\n".$data);
}
}
$newJSON = json_decode(file_get_contents('php://input'));
debug_to_console($newJSON);
if (is_writable('data/strogi.json')) {
$a = file_put_contents('data/strogi.json', $newJSON);
if(! $a)
debug_to_console("Wrote nothing");
debug_to_console("PHP write success");
} else {
debug_to_console("PHP write failed");
}
?>
正如您所看到的,我会在每个可能的位置执行检查以查看我是否实际处理非空数据 - 我记录了相关密钥的值,只有在发送时才会发送AJAX请求更改后,我记录发送的数据,并记录我的PHP文件接收和解码的数据。
我还检查文件是否可写以避免可能的权限问题,然后我才尝试写入该文件。该文件为空,我在控制台
中获得以下输出如果我在此之后检查strogi.json文件,它绝对是空的。
为了排除传递JSON对象格式的问题,我尝试在与.php相同的目录中写入一个简单的test.txt文件,该文件也是空的。
我尝试使用here描述的方法,但没有任何改变。
我尝试使用FTP上传(该方法在评论here中的某处指出),我得到了#34;没有这样的文件或目录&#34;返回strogi.json和test.txt文件。我使用public_html/test.txt
和test.txt
作为文件名。
我尝试使用锁FILE_APPEND |的组合LOCK_EX,两个文件都没有变化。
我的问题是:
后续问题值得单独一节:
coords是一个三维数组
[
[[x1,y1],[x2,y2],...]]
]
其中外部数组最多包含两个数组。第一个数组包含外部多边形的点和(如果存在)第二个数组包含用作切口的内部多边形的点。
有问题的代码是尝试将strords数组提交给至少一个对象的strogi.json工作。
一般来说,我想做的是
如果是,则使用map API调用构造函数构建多边形,构造完成后,$ .ajax用于提交通过API函数之一提取的coords。
截至目前,我提交了整个JSON对象,因为我只使用其中一个内部对象,但我想重新提交整个事物是多余的,提出了多个对象。
[[[x1,y1],[x2,y2]]]
(现在的传递方式)到this之类的值(pastebin,因为即使我使用4空格缩进也没有代码格式)
为了它的工作,对吗?我该怎么做?for()
循环遍历数组并将toString()
应用于每个坐标来解决部分问题,这样做会更好方式