保持textarea与服务器文本文件同步的最佳方法

时间:2013-05-02 17:31:36

标签: jquery ajax textarea

您好我正在创建一个简单的应用程序,用户可以在文本区域中键入信息,而不必担心保存或丢失信息。我正在使用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);

}

1 个答案:

答案 0 :(得分:1)

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

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

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

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

换句话说,在用户没有按任何键5秒(可调)之前,没有保存。

这将允许你不发送数千个ajax保存但在完成输入后发送一个。