您好我正在创建一个简单的应用程序,用户可以在文本区域中键入信息,而不必担心保存或丢失信息。我正在使用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);
}
答案 0 :(得分:1)
我会做什么:http://jsfiddle.net/z4rjQ/
为调用此函数的文本更改保存一个侦听器:
function checkSave(){
clearTimeout(timer);
timer = setTimeout(save, 5000);
}
此功能清除定时器并设置另一个定时器。
换句话说,在用户没有按任何键5秒(可调)之前,没有保存。
这将允许你不发送数千个ajax保存但在完成输入后发送一个。