PHP 写入文件有效,但显示错误

PHP write file works, but says false

我对 PHP 没有太多经验,但我想做的是将内容写入文件。由于某种原因,内容已写入文件,但仍然 returns 'failed to write to file!' 状态代码为 400。但内容已成功写入文件。怎么样?

php代码(update.php):

<?php
    //get root and page of request
    $content_root = $_SERVER['DOCUMENT_ROOT'] . '/Animagie/content';
    $page = $_POST['page'];

    //open the correct contentfile
    $content_file = fopen($content_root . '/' . $page, 'w');

    if (isset($_POST[$page . '-content'])) {

        if (fwrite($content_file, $_POST[$page . '-content']) === FALSE ) {

            echo 'failed to write to file!';
            fclose($content_file);
            http_response_code(400);
        } else {

            fclose($content_file);
            http_response_code(200);
        }
    } else {

        echo 'something went wrong!';
        fclose($content_file);
        http_response_code(400);
    }
?>

我使用以下代码调用 update.php:

    editor.addEventListener('saved', function(e) {
    var name, payload, regions, xhr;

    //check if something changed
    regions = e.detail().regions;
    if (Object.keys(regions).length === 0) {
        return;
    }

    //set editor busy while saving
    this.busy(true);

    // Collect the contents of each region into a FormData instance
    payload = new FormData();
    payload.append('page', getCurrentPage());
    for (name in regions) {
        if (regions.hasOwnProperty(name)) {
            payload.append(name, regions[name]);
        }
    }

    // Send the updated content to the server to be saved
    function onStateChange(e) {
        //check if request is finished
        if (e.target.readyState === 4) {
            editor.busy(false);
            if (e.target.status === '200') {
                new ContentTools.FlashUI('ok');
            } else {
                new ContentTools.FlashUI('no');
            }
        }
    }

    xhr = new XMLHttpRequest();
    xhr.addEventListener('readystatechange', onStateChange);
    xhr.open('POST', '../api/update.php');
    xhr.send(payload);
});

您可能会说,获得正确的状态码非常重要,因为我会检查它并 return 用户是否成功。有人能帮帮我吗?

提前致谢!

显然问题出在 javascript 检查:

if (e.target.status === '200') {
    new ContentTools.FlashUI('ok');
} else {
    new ContentTools.FlashUI('no');
}

应该是

if (e.target.status == 200) {
    new ContentTools.FlashUI('ok');
} else {
    new ContentTools.FlashUI('no');
}

此外,在我切换 if 语句后(如@Jon Stirling 所说),postman 还没有刷新。所以它部分是服务器端错误的 if 语句和客户端错误的 if 语句。