2011-10-19 88 views
0

我使用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; 
      } 

     }); 

回答

0

你可以嘗試在觸發點擊之前使用setInterval,也許2秒的延遲就足夠了。

交替地改變你的代碼做decryptEms,它會做所有領域,並返回兩者,只有這樣,你做你的觸發表單提交

+0

你的意思是有decryptEm()解析兩個值在同一時間?將解密這個問題將**放入$(blah).trigger('click')**裏面解密這個問題? –

+0

是的,兩者在同一時間,然後觸發點擊。將點擊放入當前函數中將無法正常工作,因爲它會在第一次啓動時觸發,這是您不想要的。 –

0

其返回undefined,因爲它在沒有價值函數返回。從decryptEm到服務器響應您的請求之間有一段延遲。這個延遲可能是任何事情,因爲它取決於服務器的響應時間。

0

的功能將這個,像這樣:

function loadValues(){ 
    $("#UsernameTextBox").val(decryptEm(getQueryVariable("a"))); 
    $("#PasswordTextBox").val(decryptEm(getQueryVariable("b")); 
    return true; 
} 
if(loadValues==true){ 
    $("#ctl00_ContentPlaceHolder1_SubmitButton").trigger("click"); 
} 

這樣,您就可以確保之前解僱提交其他的東西已經完成。

+0

什麼都沒有發生; decryptEm不會被調用。我將代碼調整在代碼塊的頂部。這很重要嗎? –

相關問題