0

嗨,我正在制作一个简单的应用程序,用户可以在其中将信息输入文本区域,而不必担心保存或丢失它。我正在使用 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);

}
4

1 回答 1

1

在这里我会做什么:http: //jsfiddle.net/z4rjQ/

当调用此函数的文本更改时保存一个侦听器:

function checkSave(){
    clearTimeout(timer);
    timer = setTimeout(save, 5000);
}

此功能清除计时器并设置另一个计时器。

换句话说,直到用户在 5 秒内没有按键(可调节),才进行保存。

这将允许您不发送数千个 ajax 保存,而是在他完成输入后发送一个。

于 2013-05-02T17:53:53.220 回答