0

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

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

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
4

2 回答 2

0

使用 fflush()

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

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

于 2013-08-13T19:26:51.127 回答
0

我自己想通了。

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

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

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

于 2013-08-21T18:27:57.287 回答