我正在尝试使用原型(prototype)和 PHP 创建一个自动保存功能,但它不起作用。
如果我将 $('txtdoc').value 更改为 "any text",则 "any text" 将在没有任何内容的情况下保存数据库问题
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>
最佳答案
如果您正在使用原型(prototype),那么(除非您有它不起作用的原因)您最好还是使用它...
创建一个隐藏的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 上失败,因为它不允许尾随逗号。
关于php - 自动保存 ajax, php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4518015/