Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要保存jqueryajax帖子接收到的文件,php文件必须如何查看?_Php_Jquery_Ajax - Fatal编程技术网

要保存jqueryajax帖子接收到的文件,php文件必须如何查看?

要保存jqueryajax帖子接收到的文件,php文件必须如何查看?,php,jquery,ajax,Php,Jquery,Ajax,我是一个与相对简单的事情(或者我相信是这样)斗争的noob。使用jquery ajax将json或更精确的geojson对象写入文件。 到目前为止,我的方法是这样的 $.ajax({ type: 'POST', url: "data/markers.geojson", //url of receiver file on server data: data, //geojson data

我是一个与相对简单的事情(或者我相信是这样)斗争的noob。使用jquery ajax将json或更精确的geojson对象写入文件。 到目前为止,我的方法是这样的

    $.ajax({
        type: 'POST',
        url: "data/markers.geojson",   //url of receiver file on server
        data: data,                    //geojson data
        dataType: "json"               
      });
看起来不错,但遗憾的是markers.geojson文件仍然完全为空。 如果我在“$.ajax”之前将数据变量的内容记录到控制台中,它就在那里。网络控制台显示字节被传输

现在在搜索了很多之后,我注意到其他所有人似乎都在发送json数据,而不是一个.json文件,而是一个.php文件。不幸的是,它们似乎都在php端做其他事情,或者没有人认为有必要发布方法来将接收到的json保存到服务器上的文件中

唉,我是一个初学者,在这里可能真的需要一些帮助-如何将.php文件看起来只是将json保存到一个文件中

编辑 另一个问题的答案解决了问题:

<?php
$myFile = "testFile.txt";
$phpObj = json_decode($_POST['json']);
file_put_contents($myFile,$phpObj);
echo '{ "success": true }';
?>

  • 只是别忘了在apache中启用php;-) 再次感谢患者@ADyson带领初学者完成这一过程
试试这个例子:

<?php
//error_reporting(E_ALL);
//var_dump($_SERVER);
$post_data = $_POST['data'];
if (!empty($post_data)) {
    $dir = 'YOUR-SERVER-DIRECTORY/files';
    $file = uniqid().getmypid();
    $filename = $dir.$file.'.txt';
    $handle = fopen($filename, "w");
    fwrite($handle, $post_data);
    fclose($handle);
    echo $file;
}
?>

看起来几乎和你的问题一模一样我尝试了最上面的答案,但不幸的是没有做任何事情。json文件仍然位于0字节,“没有做任何事情”的信息不足以让我们调试您的问题。请参见抱歉,因此我将“url:”行更改为“url:”data/saveJSON.php“,”其中data是目标目录,saveJSON.php是我用用户complistic的anwer的内容在那里创建的php文件。即“”。在重新加载我的页面并点击save按钮后,我在firefox网络控制台中看到了传输的字节和字节大小。但是markers.geojson文件仍然是空的。然后在PHP中进行一些调试。检查
$jsonString
的内容,查看其中的内容<代码>变量转储($jsonString)将把该变量转储到响应中(因此在firefox网络控制台中,您可以在saveJSON.php调用的“response”选项卡中看到它)。另外,您是否在PHP中打开了错误日志记录,并启用了错误和警告?这将允许您在保存文件时查看是否存在任何错误,例如与文件权限相关的错误或其他错误。有一个配置指南。当
echo$file只返回纯文本?当您知道服务器没有返回JSON时,告诉客户机在响应中使用JSON是没有意义的。对不起,如果我在这里过于密集,但我甚至没有想到需要使用php,我是一个完全的新手。所以,我想澄清一下:“$dir=”您的-SERVER-DIRECTORY/files“;”需要完整的网址吗?或者只是一条相对路径?如果它们在同一个目录下呢?我是否正确理解在“$filename=$dir.$file.'.txt”中声明文件扩展名;以及“$handle=fopen($filename,“w”);”中的实际文件名?顺便说一句,markers.geojson是所有内容都应该存储在其中的json文件,/data是目录。@Merion
执行“$dir=”YOUR-SERVER-directory/files”;“”需要完整的网址吗?
。在本例中,
$dir
应该是服务器磁盘上要保存文件的路径。与web URL无关。好的,所以基本上一个“/data”就足够了。@Merion
我是否正确理解我在$filename=$dir.$file.'.txt'中声明了文件扩展名;以及“$handle=fopen($filename,“w”);”中的实际文件名…不,完整文件名在$filename中-您可以清楚地看到“.txt”扩展名附加在那里。第二行创建一个文件句柄,即一个对象,在文件打开时作为该文件的引用。不过,根据您所看到的其他示例,使用文件内容通常更简单。
 $.ajax({
        type: 'POST',
        url: "https://www.example.com/data/markers.geojson/",   //url of receiver file on server
        data: data,                    //geojson data
        dataType: "json"               
      });