我使用简单的jQuery比较两个变量,但是每次产生错误的结果。这是代码段:

 var fromIM = $("#passwordFroma").val();
 loadContent(passwordValentered);
 var encrypt = document.getElementById("prtCnt").value;
 alert("ajax call " + encrypt);
 alert(encrypt == fromIM);


在以上代码段中,


passwordFroma是一个隐藏的文本字段。 passwordValentered是一个文本框
获取用户输入。 prtCnt是一个隐藏字段。


同样,loadContent(passwordValentered)函数是一个ajax调用,它为隐藏字段prtCnt设置值。这是从第一个警报中确认的。但是,当我比较第二个警报中的值时,总是得到错误的结果。
请让我知道我要去哪里错了!我正在使用jQuery 1.9。

最佳答案

您生成的ID为prtCnt的字段是异步生成(AJAX)的,因此调用loadContent(passwordValentered);后不能立即访问它

var fromIM = $("#passwordFroma").val();
// Sends AJAX
loadContent(passwordValentered);
// AJAX is not finished here
var encrypt = document.getElementById("prtCnt").value;
alert("ajax call " + encrypt);
alert(encrypt == fromIM);


您必须将回调传递给loadContent

var fromIM = $("#passwordFroma").val();
loadContent(passwordValentered, function(){
   var encrypt = document.getElementById("prtCnt").value;
   alert("ajax call " + encrypt);
   alert(encrypt == fromIM);
});


并修改您的loadContent,使其从$.ajax的成功处理程序中调用给定的回调

09-27 04:28