#javascript #jquery #ajax #forms
#javascript #jquery #ajax #формы
Вопрос:
Так что это довольно сложно. У меня есть форма, в которой мне нужно отправить результаты в два разных места.
Первое место занимает вызов ajax, где я отправляю результаты на страницу PHP. Второе — это просто отправка формы, все как обычно.
Вот мой javascript:
<script type="text/javascript">
$(function() {
$("#requestaction").click(function() {
var fname = $("input#first_name").val();
var lname = $("input#last_name").val();
var email = $("input#email").val();
var phone = $("input#phone").val();
var oid = $("input#oid").val();
var retURL = $("input#retURL").val();
var dataString = 'amp;email=' email 'amp;phone=' phone 'amp;oid=' oid 'amp;retURL=' retURL;
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "http://www.myurl.com/custom/callgateway.php?first_name=" fname "amp;last_name=" lname,
data: dataString
});
$("#requestaction").click(function() {
$("#oid").delay(1000);
$("#nashform").submit();
});
return false;
});
});
</script>
Итак, чего я хочу, так это чтобы вызов ajax отправлял результаты на эту страницу. И затем я хочу задержку на несколько секунд или сколько бы времени это ни заняло до завершения, и я хочу, чтобы форма с идентификатором #nashform была отправлена. Кажется, что я могу заставить обе формы выполняться по отдельности, но когда я пробую этот код одновременно — полностью выполняется только код #nashform, ajax никогда не получает шанса.
Есть предложения?
Ответ №1:
Поместите отправку формы в успешный обратный вызов ajax-вызова:
$.ajax({
type: "POST",
url: "http://www.myurl.com/custom/callgateway.php?first_name=" fname "amp;last_name=" lname,
data: dataString,
success: function(response) { $("#nashform").submit(); }
});
Комментарии:
1. Черт возьми, так быстро, да еще и с примером кода. 1 для вас, сэр!
2. Эйджей, у тебя есть только столько времени, чтобы ответить на вопросы jquery 🙂
Ответ №2:
$.ajax({
type: "POST",
url: "http://www.myurl.com/custom/callgateway.php?first_name=" fname "amp;last_name=" lname,
data: dataString,
success: thesubmitfunction
});
Сделайте отправку формы в thesubmitfunction
while, которая будет вызвана после успешного завершения вызова ajax.
Ответ №3:
Вам нужна функция обратного вызова, чтобы отправить вашу форму после ajax()
возврата.
Ответ №4:
Вместо задержки, почему бы вам не добавить отправку nashform
к обратному вызову, который выполняется после завершения отправки AJAX post? Таким образом, вы потенциально не сократите передачу AJAX в середине или перед публикацией.
Вы также могли бы рассмотреть возможность создания обеих записей с использованием AJAX … обе публикации одновременно, как только обе будут завершены, страница может обновиться (или даже перенаправиться), создавая у пользователя иллюзию, что данные были отправлены в обычном режиме.