автосохранение ajax, php - PullRequest
       4

автосохранение ajax, php

2 голосов
/ 23 декабря 2010

Я пытаюсь сделать функцию автосохранения с прототипом и 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 Ответ

1 голос
/ 27 июня 2011

Если вы используете прототип, то (если у вас нет причины, по которой он не работает) вам лучше всего его использовать ...

Создать скрытый 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, так как не позволяет использовать запятые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...