我使用简单的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。
答案 0 :(得分:3)
您生成的标识为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
的成功处理程序调用给定的回调