如何在完成/成功 ajax 函数中访问 ajax 请求数据



我有一个文本输入,其值在不断变化。

每次值更改时,都会发出一个 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'
}

最新更新