0
嗨我正在做一個簡單的應用程序,用戶可以在文本區域鍵入信息,而不必擔心保存或丟失它。我正在使用jquery/javascript檢測文本區域的更改,然後使用ajax將值發送到php以寫入服務器。我有一些基本的「繁忙」鎖定來防止重疊Ajax。但是,我發現它有點不可靠。有一個更好的方法嗎?保持textarea與服務器文本文件同步的最佳方式
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);
}
我看到的最大問題是,如果兩個用戶同時編輯文件,它將不同步,他們會一直覆蓋對方的工作,除非您經常從服務器更新textarea。 – 2013-05-02 17:36:11
你的第一個最好的選擇就是每隔30秒「監視」計時器的變化。每次改變時都不要嘗試更新。其次,你不需要像jQuery那樣設計funcs,你可以,但不需要,你可以將該行重寫爲$('#text')。bind('input propertychange',save);' – SpYk3HH 2013-05-02 17:36:12