Аякс Пост Сомнение - PullRequest
       3

Аякс Пост Сомнение

1 голос
/ 10 августа 2010

Я все еще запутался в технологии Ajax. И я до сих пор не могу ответить на этот мой вопрос, поскольку я все еще пытаюсь понять технологию.

Это касается размещения данных на сервере. В обычном веб-приложении, не поддерживающем Ajax, я обычно выполняю шаблон PRG (Post-Redirect-Get), когда выполняю команду POST. Я узнал, что это предотвратит проблему двойной отправки или когда пользователь попытается обновить страницу или выполнить какую-либо транзакцию обратного продвижения в браузере.

В Ajax вы не выполняете перенаправление, потому что это уничтожит цель Ajax, так как это то, что говорится в учебниках и книгах, которые я читаю

В Jquery, когда я выполняю

$(document).ready(function(){
    $("#myForm").submit(function(){
        $.post("test.htm", function(data){
            alert("Successfully save data");
        }, "json");
        //prevent page refresh
        return false;
    });
});

и пользователь выполняет обновление (F5) или пользователь выполняет транзакцию браузера «Назад» и «Вперед». Разве я не рискую иметь двойную проблему? Перезапустит ли браузер мое событие клика снова.

Извините, если это может показаться слишком глупым для других, но я просто хочу прояснить свои мысли для новичка, как я.

Ответы [ 2 ]

3 голосов
/ 10 августа 2010

Это зависит от того, где вы поместили этот код, если этот код находится в обработчике события щелчка для кнопки или чего-то еще, то перезагрузка страницы не вызовет повторного нажатия кнопки.Если вы просто отбросите этот код в точности так, как он есть на вашей странице (или в функции $ (document) .ready), тогда да, перезагрузка страницы повторно отправит этот запрос.

Поскольку ajax запускаетсядействие пользователя, двойная отправка не является проблемой, если пользователь не выполняет это действие дважды.Так как вы все равно обрабатываете все в javascript, легко удалить это действие - или кнопку, которую нажимает пользователь - после того, как они выполнили это действие один раз.

Имеет ли это смысл?Надеюсь, это поможет.

0 голосов
/ 10 августа 2010

Как правило, эта запись происходит в javascript, а не автоматически в обновлении страницы (если, конечно, код не обрабатывает ее каждый раз, конечно) - например, она будет обрабатываться как часть другого события, такого как «щелчок» или записьполе в форме и т. д.

Теперь о том, как обрабатывать сообщения с дублирующимися данными, зависит от вас при построении логики кода на стороне сервера, если размещение дублированных данных недопустимо.

Имейте в виду, что ajax обычно НЕ является частью кругового обхода страницы, но специально для того, чтобы этого избежать - так что вы можете делать частичные сохранения, например, без обновления страницы.

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