我使用 jquery 通过 ajax 请求检索一些用于填充输入字段的值。检索这些字段后,我需要在另一个 ajax 调用中使用它们的新值,但我看到我得到了在我的 ajax 调用之前字段中的值。
$("#clickme").function(e) {
e.preventDefault()
retrieveValues()
compareValues()
}
function retrieveValues {
paramList = {}
..... snip .....
$.ajax({
url: myControllerAction,
type: "POST",
dataType: "json",
data: JSON.stringify(paramList),
contentType: "application/json; charset=utf-8",
success: function (result) {
$("#myFieldOne").val(result["myFieldOne"]);
$("#myFieldOne").val(result["myFieldOne"]);
$("#myFieldThree").val(result["myFieldThree"]);
}
},
error: function () {
alert("error");
}
});
function compareValues {
paramList = {}
paramList["myFieldOne"] = $("#myFieldOne").val();
paramList["myFieldTwo"] = $("#myFieldTwo").val();
paramList["myFieldThree"] = $("#myFieldThree").val();
paramList = {}
..... snip ....
$.ajax({
url: myOtherControllerAction,
type: "POST",
dataType: "json",
data: JSON.stringify(paramList),
contentType: "application/json; charset=utf-8",
success: function (result) {
.....
some Business Logic
.....
}
},
error: function () {
alert("error");
}
});
}
在点击“clickme”之前,我有
<input name="myFieldOne" id="myFieldOne" value="default value #1">
<input name="myFieldTwo" id="myFieldTwo" value="default value #2">
<input name="myFieldThree" id="myFieldThree" value="default value #3">
并且函数retrieveValues 应该用新值“新值#1”、“新值#2”、“新值#3”设置这三个字段。
从retrieveValues() 返回后,我调用了compareValues(),但Jquery 对象仍然包含默认值。我似乎只有在点击事件结束后才会更改字段值。函数 compareValues() 在第一次单击时发送错误的数据,值比较错误,然后如果我再次单击“clickme”值,则比较正确。
有什么方法可以纠正这个问题并让 jquery 即时识别我在输入字段中的新值?
弗朗切斯科