自动保存ajax,php

时间:2010-12-23 10:46:37

标签: php javascript ajax prototypejs

我正在尝试使用原型和PHP创建自动保存功能,但它不起作用。

如果我将 $('txtdoc')。值更改为“任何文字”,那么“任何文字”都会保存而不会数据库中的问题

JS

document.observe("dom:loaded", function() { 
               intervalID = window.setInterval("autosave()",1000);
              });

              function autosave() {
                 new Ajax.Request('autosave.php?id=<?php echo $_GET["id"];?>', 
                { 
                method: 'post',
                  parameters: {txtdoc: $('txtdoc').value},

                                });
                            }

autosave.php

<?php 
include '../../db.php'; 

if(isset($_POST["txtdoc"])){
$did = mysql_real_escape_string($_GET["id"]);
$txtdoc = mysql_real_escape_string($_POST["txtdoc"]);
$sql="UPDATE doc SET txt = '$txtdoc' WHERE id = '$did'";
mysql_query($sql); 
}

?>

表格

<form action="" method="post">
<textarea id="txtdoc" name="txtdoc" style="width:605px; height:200px;"><?php echo $txt; ?></textarea>
<input type="submit" value="Save"/>
</form>

<script>
autosave();
</script>

1 个答案:

答案 0 :(得分:1)

如果您正在使用原型,那么(除非您有理由说它不起作用)您可能最好使用原型...

创建一个隐藏的div:

<div id="dummy" style="display: none"></div>

然后试试这个:

document.observe('dom:loaded', function() {
  new Ajax.PeriodicalUpdater(
    'dummy',
    'autosave.php?id=<?php echo $_GET["id"];?>', {
      method: 'post',
      parameters: {
        txtdoc: $F('txtdoc')
      }
    }
  , 10)
});

这样做是使用PeriodicalUpdater(每10秒触发一次)来调用PHP脚本。使用$ F(统一字段阅读器方法)读取参数。

另外,我注意到在参数:object之后有一个尾随逗号。这将在IE上失败,因为它不允许使用尾随逗号。