1

我正在使用简单的 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。

4

1 回答 1

3

您生成的带有 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

于 2013-05-07T20:13:42.173 回答