我有一个文本输入,其值不断变化。
每次值更改时,都会发出ajax请求。
因为文本输入的值不断变化,当ajax请求成功返回时,我想确定文本输入的当前值是否与我在ajax请求数据中发送的值相同。
我没有看到任何示例显示如何从ajax done / success函数中访问请求数据。
如何在done / success ajax函数中访问ajax请求数据?
我可以在响应数据中包含请求值,但似乎应该有一种方法可以在不更新API的情况下执行此操作。
答案 0 :(得分:1)
只需将输入值分配给变量:
function makeRequest() {
var value = myInput.value;
$.ajax({
// ...
success: function() {
if (value === myInput.value) {
// ...
}
}
});
}
答案 1 :(得分:0)
如果正确解释问题,请尝试使用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/
答案 2 :(得分:-1)
您应该将当前输入值存储在变量中,然后检查它是否等于其当前值。由于ajax请求是异步的,因此您无法以这种方式将该值存储在变量中
function sendRequest(inputValue){
var currentValue = inputValue;
$.ajax({ })
.done(function(data) {
// currentValue could be changed
});
}
相反,您需要将该变量绑定到self invoking function,然后检查它是否等于.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'
}