我使用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')**裏面解密這個問題? –
是的,兩者在同一時間,然後觸發點擊。將點擊放入當前函數中將無法正常工作,因爲它會在第一次啓動時觸發,這是您不想要的。 –