Я использую JSONP для извлечения значений для формы входа в систему, затем получаю форму для самостоятельной отправки. Однако форма передается до заполнения полей, что приводит к появлению флагов проверки.
Функция возвращает правильное значение, но глобальная переменная unscrambleText возвращает неопределенное значение. Я знаю, что async: false необходим для возврата синхронных вызовов, но в данном случае это игнорируется. Я получил это для работы с базовым вызовом AJAX на другой странице. Чего мне не хватает в этом конкретном примере?
$(document).ready(function () {
if ((getQueryVariable("a") != 0) && (getQueryVariable("b") != 0)) {
$("#UsernameTextBox").val(decryptEm(getQueryVariable("a")));
$("#PasswordTextBox").val(decryptEm(getQueryVariable("b"));
//This action is being triggered before the above two fields are populated
$("#ctl00_ContentPlaceHolder1_SubmitButton").trigger("click");
}
function getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return unescape(pair[1]);
}
}
return 0;
}
function decryptEm(thevar) {
var unscrambleText;
$.ajax({
url: 'http://foo.bar/decrypt.php',
async: false,
dataType: 'jsonp',
data: 'text=' + thevar,
success: function (data) {
unscrambleText = data["theval"].replace(/^\s+|\s+$/g, "");
}
});
return unscrambleText;
}
});