Мне нужно получить доступ к переменной «cont» после запуска каждого цикла. Мне нужно запустить электронное письмо, если cont = true, который устанавливается после вызова ajax в каждом цикле. Я читал, что каждый цикл является синхронным, но когда я завершаю log var cont после каждого цикла, я получаю false, даже если он установлен как истинный.переменная доступа jQuery за пределами каждого цикла
$(".check").click(function (event) {
var cont = false;
event.preventDefault();
$("form.form").each(function (index) {
var $this = $(this);
var name = $this.find('input.name').val();
var company = $this.find('input.comp_name').val();
var jtitle = $this.find('input.job_title').val();
var link = $this.find('input.link').val();
var email = $('input.email').val();
if ((name === "") || (company === "") || (jtitle === "")) {
$this.addClass("NotFilled");
} else {
var url = $this.attr('action');
// fetch the data for the form
var data = $this.serializeArray();
$.ajax({
url: url,
data: data,
type: "post",
success: function (result) {
if (result === "success") {
cont = true;
$this.removeClass("NotFilled").addClass("filled");
//console.log(cont) I Get True here
} else {
cont = false;
$this.removeClass("filled").addClass("NotFilled");
}
return cont;
}
});
}
});
//console.log(cont) I Get false here
if (cont === "true") {
$.post("<?php bloginfo('template_url'); ?>/x/x.php", {
emailTo: email,
emailFrom: '[email protected]',
subject: 'New x x x',
message: 'We x x x'
},
function (data) {});
}
});
Вы должны поместить этот код в обратный вызов вызова ajax. потому что это асинхронно по природе – mohamedrias
Возможный дубликат: http://stackoverflow.com/questions/6685249/jquery-performing-synchronous-ajax-requests – Pete