Как сохранить файл в каталог, заданный входом type = "text" с php? - PullRequest
1 голос
/ 17 февраля 2020

У меня есть html страница с jQuery, и я использовал ajax для отправки данных в файл php для сохранения данных.
Я видел другие подобные вопросы, но ни один из них не показался в соответствии с моей целью.

Данные srcdo для iframe c.

My html выглядит следующим образом:

<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)">

Мои jQuery и 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>

Когда я запускаю его, я получаю сообщение с предупреждением «УСПЕХ». И console.log дает мне:

<!doctype html>
<html>
<body>
Error</body>
</html>

Что здесь происходит, и что я делаю не так?

1 Ответ

1 голос
/ 17 февраля 2020
contentType: "application/json"

Вы явно отправляете это на сервер как JSON - поэтому вы не можете получить к нему доступ через $ _POST. (PHP заполняет только $ _POST для типов контента application/x-www-form-urlencoded или multipart/form-data.)

Либо удалите contentType, чтобы он мог вернуться к обычному способу отправки данных формы, либо go Узнайте, как на самом деле читать POSTed JSON данные в PHP. (Для этого сначала нужно прочитать данные из php://input, см. Получить JSON POST с PHP)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...