【问题标题】:I have an issue with fwrite not properly overwriting a file我遇到了 fwrite 无法正确覆盖文件的问题
【发布时间】:2013-08-15 13:26:29
【问题描述】:

由于某种原因,当我使用 fwrite 覆盖文件的内容时,它会擦除​​数据,但在第二次调用 fwrite 之前无法将新内容写入其中。有什么办法可以解决这个问题吗?

我的脚本使用 HttpRequest 将 FormData 对象发送到外部脚本,就好像我调用了表单提交一样,然后脚本将表单数据保存到服务器上的文件中,然后使用另一个 HttpRequest 来获取响应文本服务器上的文件并将其应用于另一个元素的值:

PHP.php
data = $_POST["name"];
fopen(filename, w);
fwrite(file, data);
fclose(file);

CORE.html
<script>
function functionName() {

obj = new XMLHttpRequest;
form = new FormData;
form.append("name", object.getElementById(elementId).value);
obj.open(POST, PHP.php, false);
obj.send(form);

obj2 = new XMLHttpRequest;
obj2.onreadystatechange = function() { if (obj2.readyState == 4 && obj2.status == 200) document.getElementById(elementId2).value = obj2.responseText };
obj2.open(POST, OUTPUT.txt, false);
obj2.send();
}
</script>

<textarea id=elementId onkeypress=functionName()>
</textarea>
<br>
<textarea id=elementId2>
</textarea>

OUTPUT.text
epty text document

【问题讨论】:

    标签: httprequest dhtml fwrite


    【解决方案1】:

    使用 fflush()

    http://php.net/manual/en/function.fflush.php

    此函数强制将所有缓冲输出写入文件句柄指向的资源。

    【讨论】:

      【解决方案2】:

      我自己想通了。

      由于某种原因,使用 onkeypress 事件,在将任何字符插入 TextArea 之前触发了该事件并调用了该函数,导致文件被写入一个空字符串。

      后续尝试写入成功的原因是,在后续按键操作中,字符出现在 TextArea 中,并成功写入文件。

      我只是在字符出现后使用另一种方法调用该函数。

      【讨论】:

        猜你喜欢
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多