У меня есть простая функция AJAX который вызывается, когда пользователь нажимает кнопку, которая отправляет текст HTML текстового поля и предупреждает ответ от внутреннего интерфейса:Php Fread() функция не возвращает ничего
send_button.onclick = function()
{
var ajax = new XMLHttpRequest();
var text = text_input.value;
ajax.onreadystatechange = function()
{
if (ajax.readyState == 4 && ajax.status == 200) alert(ajax.responseText);
};
ajax.open("POST", "write.php", true);
ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
ajax.send("text=" + text);
};
а как PHP скрипт на внутреннем интерфейсе, который предполагается записать полученный текст в файл и эхо содержимого файла:
<?php
$filename = "preview/preview.html";
$text = (isset($_POST["text"]) ? $_POST["text"] : "");
try
{
$fh = fopen($filename, "w+");
if (!$fh) throw new Exception("File open error");
fwrite($fh, $text);
$filetext = (filesize($filename) > 0 ? fread($fh, filesize($filename)) : "");
echo $filetext;
fclose($fh);
}
catch (Exception $e)
{
header("Location: error.php");
}
?>
Но каждый раз, когда ответ пуст. Я попытался повторить строчную строку вместо fread()
, и это сработало, я также попытался эхом ответить filesize($filename)
, который отлично работал.
Данные POST, отправленные функцией AJAX, также проходят, и функция fwrite($fh, $text)
выполняет именно то, что она должна.
Что я делаю неправильно?
Спасибо за объяснение! Я приму свой ответ, как только это позволит мне ^^ – Parzival