【发布时间】:2013-04-26 23:46:00
【问题描述】:
您好,我正在制作一个简单的应用程序,用户可以在其中将信息输入到文本区域,而不必担心保存或丢失信息。我正在使用 jquery/javascript 来检测对文本区域的更改,然后使用 ajax 将值发送到 php 以写入服务器。我有一些基本的“忙”锁来防止重叠的ajax。但是,我发现它有点不可靠。有一个更好的方法吗?
var busy = false;
function save () {
if(busy === false) {
busy = true;
var content = $('#text').val();
var file = 'store.txt';
$.get("storecontent.php", { content_fromjq: content, file_fromjq: file})
.done(function(data) {
busy = false;
});
}
}
$('#text').bind('input propertychange', function() {
save();
});
PHP:
if (isset($_GET['content_fromjq'])) {
$content = $_GET['content_fromjq'];
$file = $_GET['file_fromjq'];
$html = new DOMDocument();
$html->loadHTMLFile($file);
$html->getElementById('content')->nodeValue = $content;
$html->saveHTMLFile($file);
}
【问题讨论】:
-
我看到的最大问题是,如果两个用户同时编辑文件,它将不同步,除非您经常从服务器。
-
您的第一个最佳选择是每隔 30 秒在计时器上“监控”一次更改。不要在每次有变化时都尝试更新。其次,你不需要像在jQuery中那样分配函数,你可以,但不需要,你可以将该行重写为
$('#text').bind('input propertychange', save);