我使用JSONP检索登录表单的值,然后使表单自动提交。但是,表单在填充字段之前提交,导致验证标志。表单在json值填充的字段之前提交
该函数确实返回正确的值,但全局作用域变量unscrambleText返回undefined。我知道async:false对于返回同步calss是必要的,但在这种情况下似乎被忽略。我得到这个在另一个页面上使用基本的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;
}
});
你的意思是有decryptEm()解析两个值在同一时间?将解密这个问题将**放入$(blah).trigger('click')**里面解密这个问题? –
是的,两者在同一时间,然后触发点击。将点击放入当前函数中将无法正常工作,因为它会在第一次启动时触发,这是您不想要的。 –