我使用简单的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
的成功处理程序中调用给定的回调