Я пишу форму для вставки на веб-страницы клиентов, которая должна быть отправлена с запросом AJAX для обработки. Затем, в зависимости от настроек клиента, я хочу либо отобразить победное сообщение «Форма успешно отправлена», либо перенаправить пользователя на мой сайт (отправив форму на мой сайт) для дополнительной обработки.
Я использую jQuery, чтобы попытаться заставить это работать. Моя стратегия заключается в том, чтобы поместить «живую» привязку к событию отправки в мою форму, что затем предотвращает отправку по умолчанию и отправляет сообщение jQuery, используя значения формы в качестве параметров для обработки на моем сайте. Если форма проходит проверку и определяет, что пользователь должен быть перенаправлен, отправка формы запускается снова, но на этот раз обработчик отправки возвращает true, что должно включить значение по умолчанию, верно? Он возвращает true (я проверил с оповещениями), но форма не отправлена. Вот пример кода:
<form id="myform">
<!-- Elements in here -->
<input type="submit" value="Submit" name="submit" id="submit">
</form>
<script>
var handleSubmit = true;
$("#myform").live('submit', function(){
if (handleSubmit === true){
$.post('http://example.org', $('#myform').serialize(), function(response){
if (response.success){
if (response.redirect){
handleSubmit = false;
$('#myform').attr('action',response.redirect);
$('#myform').submit();
} else {
alert('success!');
}
} else {
// replace form contents with response.html (the form w/ errors)
}
}, 'json');
return false;
} else {
// submit form (default action)
return true;
}
});
</script>
Я пробовал разные вещи, такие как помещение триггера отправки в setTimeout или использование 'bind' вместо использования live, но результат тот же.
Одна вещь, которую, возможно, важно отметить, это то, что вышеуказанный код и код самой формы также генерируются из запроса AJAX с сайта клиента.
Буду очень признателен за любые указания, которые вы можете дать. Я также определенно открыт для разных способов сделать это.
Спасибо!