Почему я застрял в этом цикле отправки AJAX? - PullRequest
0 голосов
/ 14 января 2010

Я пытаюсь использовать плагин форм jQuery для динамической отправки формы при изменении.

Это определенно работает, но каждый раз, когда пользователь меняет входное значение, он делает .post, запускает мой успех «alert ()» и затем повторяется снова и снова, пока я не обновлю страницу, чтобы остановить цикл. Вот код:

<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>AJAX Form Test Suite</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.min.js"></script>
<script src="_scripts/jquery.form.js"></script>
<script>
    $(document).ready(function() {
    var options = { 
        success:       alertYes // post-submit callback 
    }; 

    // binding to each input's change event 
    $('#mainForm input').change(function() { 

        $(this).parent().ajaxSubmit(options); 

        return false; 
    });

    //success callback function
    function alertYes()  {      
        alert('You did it!'); 
    } 
});
</script>
</head>

<body>
<div id="ajaxMessage">
<h1>This is a suite AJAX form</h1>
<form id="mainForm" action="saveForm.php" method="post">
    <ul class="nolist">
    <li class="label"><label>Name</label></li>
    <li class="input"><input type="text" name="name" value="Eric Roberts" /></li>
    <li class="label"><label>Email</label></li>
    <li class="input"><input type="text" name="email" value="e-rob@tvgods.com" /></li>
    <li class="label"><input type="submit" name="submit" value="DO IT" /></li>
    </ul>
</form>
</div>
</body>
</html>

Что я делаю не так, чтобы это постоянно повторялось? Я предполагаю, что это то, что когда .post возвращается после оповещения, он снова размывает ввод, который снова и снова повторяет вызов ajax, но я не знаю, почему он это сделал?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 января 2010

Я полагаю, что ваш вызов alert () вызывает событие blur () формы, что вызывает повторную отправку формы.


обновление

Если вы используете Firebug, вы можете использовать следующий javascript:

console.debug('my message goes here');

для отправки сообщений на консоль Firebug. Я обычно заключаю это в вызов как этот:

function status(msg)
{
  if(console)
    console.debug('# '+msg);
  }
}

и затем вызовите статус ('мое сообщение здесь ...') в моем javascript, чтобы выдать любые сообщения отладки / трассировки, которые мне требуются. Оборачивая его в функцию, как я делал выше, вы гарантируете, что код будет по-прежнему работать при запуске в браузере, который не определил объект консоли (IE или любой браузер, в котором не установлен Firebug).

1 голос
/ 14 января 2010

Есть ли шанс, что я смогу убедить вас связать с событием .change входы? Это, вероятно, решит эту проблему, и вы избежите множества ненужных представлений. Прямо сейчас, если кто-то вводит, а затем выходит из формы (ничего не меняя), он отправляет, что является бессмысленной отправкой. .В любом случае, изменение, вероятно, ближе к тому, что вы собираетесь делать.

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