JSONPを使用してログインフォームの値を取得してから、自己提出フォームを取得しています。ただし、フィールドが入力される前にフォームが送信されているため、検証フラグが生成されます。json値で入力されたフィールドの前に送信されるフォーム
関数は正しい値を返しますが、グローバルスコープの変数unscrambleTextはundefinedを返します。私はasync:同期calssを返すには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;
}
});
decryptEm()は両方の値を同時に解析することを意味しますか? decryptEm()内の** $(blah).trigger( 'click')**をこの問題を解決するでしょうか? –
はい、同時に、両方ともクリックします。現在の関数の中にクリックを置くことは、最初に起動するようには機能しませんが、これは望ましくありません。 –