我有一个文本输入,其值在不断变化。
每次值更改时,都会发出一个 ajax 请求。
由于文本输入的值不断变化,因此当 ajax 请求成功返回时,我想确定文本输入的当前值是否与我在 ajax 请求数据中发送的值相同。
我没有看到任何示例显示如何从 ajax done/success 函数中访问请求数据。
如何在完成/成功 ajax 函数中访问 ajax 请求数据?
我可以在响应数据中包含请求值,但似乎应该有一种方法可以在不更新 API 的情况下执行此操作。
只需将输入值分配给变量:
function makeRequest() {
var value = myInput.value;
$.ajax({
// ...
success: function() {
if (value === myInput.value) {
// ...
}
}
});
}
如果正确解释问题,请尝试使用 input
event
?值应该总是不同的 ?如果要求是缓存值,那么判断返回值是否与缓存中的值不同,创建一个缓存对象?
$(function () {
var input = $("input");
input.on("input", function (e) {
$.post("/echo/json/", {
json: JSON.stringify({
"value": e.target.value
})
}, "json")
.then(function (data) {
console.log(data)
}, function (jqxhr, textStatus, errorThrown) {
console.log(errorThrown)
})
});
});
JSFIDDLE http://jsfiddle.net/eaq3x0ur/
您应该将当前输入值存储在变量中,然后简单地检查它是否等于其当前值。由于 ajax 请求是异步的,因此不能以这种方式将该值存储在变量中
function sendRequest(inputValue){
var currentValue = inputValue;
$.ajax({ })
.done(function(data) {
// currentValue could be changed
});
}
相反,您需要将该变量绑定到自调用函数,然后检查它是否等于您当前输入的值 .done
.
以下方法应该有效(未测试):
function sendRequest(inputValue){
(function(val){
$.ajax({
// Your options
})
.done(function(data) {
if (val == $("#yourInput").val()) {
// Do something..
}
});
})(inputValue); // Pass 'inputValue' to self-invoking function as 'val'
}