使用 AJAX 和 php 将内容保存到文件

Posted

技术标签:

【中文标题】使用 AJAX 和 php 将内容保存到文件【英文标题】:Save content to file using AJAX and php 【发布时间】:2014-10-04 09:14:58 【问题描述】:

您好,提前非常感谢。 我把下面的代码弄乱了很久,但没有让它工作。实际上,整个代码应该只将 DIV 写入我服务器上的某个文件并为该文件命名。似乎很容易——但实际上对我来说并不像我意识到的那样。

到目前为止,这是我的代码:

HTML / PHP

<div id="data2save">
<table  border="1px" cellpadding="0" cellspacing="0" style="float:left" >
<tbody>
  <tr>
    <td style="border-top:1px solid #000;border-left:1px solid #000;border-bottom:1px solid #000;">07:00 - 08:00</td>
    <td bgcolor="#99CC00" value="1">&nbsp;</td>
    <td bgcolor="#99CC00" value="2">&nbsp;</td>
    <td bgcolor="#99CC00" value="3">&nbsp;</td>
  </tr>
</tbody>
</table> 
</div>
<br>
<input type="button" value="save" id="save">

<?php
 $userid = 10;
 $kalenderwoche = date('W', time());
 sprintf("%02d",$kalenderwoche);
 $jahr = date('Y', time());
?>

AJAX:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

<script>

$("#save").live("click",function() 

var userid = "<?php echo $userid ?>";
var kalenderwoche = "<?php echo $kalenderwoche ?>";
var jahr = "<?php echo $jahr ?>";

var bufferId =$("#data2save").html();

        $.ajax(
             type : "POST",
             url : "saver2.php",
             data: user_ID: userid , kw: kalenderwoche , jj : jahr , id : bufferId,
             dataType: "html",
             success: function(data) 
             alert("ok");  
             
             );
); 
</script>

以及处理数据以将其保存到文件中的 php 文件似乎包含错误。

saver2.php:

<?php

$kalenderwoche = $_POST['kw'];
$userid = $_POST['user_ID'];
$jahr = $_POST['jj'];
$data = $_POST['id'];

if (!file_exists($userid.'/'))         
mkdir($userid.'/', 0755, true);


$copyname =  $userid. '/' .$userid. '_' .$jahr. '_' .$kalenderwoche. '.html';   

$handle = fopen($copyname , 'w+');  

if($handle)
 

 if(!fwrite($handle, $data ))
 echo "ok";
 


?>

嗯,就是这样。我希望任何人都眼尖,因为我没有发现问题。谢谢

【问题讨论】:

【参考方案1】:

你不应该先关闭你的文件吗? 此外,如果出现错误,fwrite 会返回 false,或者返回文件的长度。 所以 !fwrite() 如果写了一些东西(或 0 )返回 false。

<?php

$kalenderwoche = $_POST['kw'];
$userid = $_POST['user_ID'];
$jahr = $_POST['jj'];
$data = $_POST['id'];

if (!file_exists($userid.'/'))         
mkdir($userid.'/', 0755, true);


$copyname =  $userid. '/' .$userid. '_' .$jahr. '_' .$kalenderwoche. '.html';   

$handle = fopen($copyname , 'w+');  

if($handle)
 

 if(fwrite($handle, $data ))
 echo "ok";
 

fclose($handle);

?>

另外我希望您不要将该代码获取到生产服务器,因为它充满了安全漏洞。

【讨论】:

flcose 在这种情况下无关紧要,因为它将被垃圾收集:***.com/questions/12143343/… fclose 没有我意识到的影响。别担心,我不会将该代码用于任何敏感数据。它仅供私人使用。但如果它有效,那就太好了:) !fwrite 如果操作成功返回 false,我没有得到“ok”消息的逻辑。那么你的错误在哪里?您不会在 $.ajax 中收到成功消息吗? 实际上什么也没发生。代码应该创建一个文件,但没有。当按下“保存”按钮时,我在 chrome 控制台“第 38 行(匿名函数)”中收到错误消息。但第 38 行只是 $.ajax( 我无法想象那一行的问题是什么 你能记录php错误吗?由于 php 错误,$.ajax 返回错误。

以上是关于使用 AJAX 和 php 将内容保存到文件的主要内容,如果未能解决你的问题,请参考以下文章

PHP和Ajax将文件路径上传到Mysql并将重命名的图像保存到文件夹失败

使用 JS 和 PHP 将 textarea 内容保存在文件中

使用 PHP、Ajax、jQuery 将当前 DOM 保存到服务器上的文件?

如何使用ajax将输入文件数据值发送到php页面

通过保存对话框形式将由 php 脚本生成的文件保存到目录中

使用ajax调用从javascript保存txt文件到PHP