如何将文件保存到由输入类型=“文本”与php给出的目录中?

我有一个带有jQuery的html页面,我使用ajax将数据发送到php文件以保存数据。

我见过其他类似的问题,但似乎都不符合我的目的。


数据是一个帧的语义。


我的网页看起来像这样:


<iframe srcdoc="<h1>hello</h1>" id="iframe"></iframe>

<br />

<input type="text" placeholder="Filename to save as..." id="fn">

<input type="button" value="Save" onclick="saveDoc(document.querySelector('#fn').value)">


我的 j 查询和 JS 看起来像这样:


function saveDoc(e) {

  let iframe = document.querySelector("#iframe");

  let data = {"srcdoc": iframe.srcdoc, "lnk": e};


  $.ajax({

    type: "POST",

    url: "saver.php",

    dataType : "text",

    contentType: "application/json",

    data: data,

    cache: false,

    timeout: 3000,

    success: function (data) {

        alert("SUCCESS");

        console.log(data);

    },

    error: function (e) {

        alert(e);

    }

  });

}

我的php代码看起来像这样:


<!doctype html>

<html>

<body>

<?php

  if (isset($_POST["lnk"]) && isset($_POST["srcdoc"])) {

    $myfile = fopen($_POST["link"], "w");

    fwrite($myfile, $_POST["srcdoc"]);

    fclose($myfile);

    echo $_POST["lnk"];

    echo "\n <br/>";

    echo $_POST["srcdoc"];

  } else {

    echo "Error";

  }

?>

</body>

</html>

当我运行它时,我收到一条警告消息,说“成功”。控制台.log给了我:


<!doctype html>

<html>

<body>

Error</body>

</html>

这里发生了什么,我做错了什么?


德玛西亚99
浏览 105回答 1
1回答

Smart猫小萌

contentType:&nbsp;"application/json"您以 JSON 形式显式地将其发送到服务器 - 因此您无法通过 $_POST 访问它(PHP 仅填充内容类型或 的 $_POST)。application/x-www-form-urlencodedmultipart/form-data要么删除 ,以便它可以回退到发送表单数据的正常方式,要么继续阅读如何在PHP中实际读取POSTed JSON数据。(这将涉及首先读取数据,请参阅使用PHP接收JSON POSTcontentTypephp://input)
打开App,查看更多内容
随时随地看视频慕课网APP