2011-10-19 87 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不会被调用。我将代码调整在代码块的顶部。这很重要吗? –

相关问题