jQuery .post 不会在 done 和 fail 中返回数据



我很难做出jquery ajax请求,并将数据重新放回.done和.fail方法中。这是调用ajax征用代码的代码:

async function doSomething(){
    const addressValid = await isAddressValid(form.address1.value, form.address2.value, form.city.value, form.state.value, form.zip.value);
    if(!addressValid) return
}

这是请求代码:

export default (address1, address2, city, state, zip) => {
    console.log(`Checking address`);
    return $.post('/api/validate', {
            address1,
            address2,
            city,
            state,
            zip
        })
        .done(function(data, status, xhr){
            // Address is valid
            return true;
        })
        .fail(function(jqXHR, textStatus, errorThrown ){
            // Address is invalid or API is down, etc
            return false;
        });
}

我的问题是.done()和.fail()中的返回语句不起作用。在isaddressvalid()之后,如果地址很好,或者什么都没有。这有多个问题 - 首先是它完全无视我的return true;。第二个是当地址无效时,服务器将返回400,这根本没有返回到地址。

/https://api.jquery.com/jquery.post/:

从jQuery 1.5开始,所有JQuery的Ajax方法都返回 XMLHTTPREQUEST对象。这个jQuery XHR对象或" JQXHR", $ .get()返回的实现了承诺接口, 承诺的属性,方法和行为(请参阅延期 对象以获取更多信息)。

因此,似乎我正在做的事情应该起作用。我认为诺言将通过我的布尔回报值解决,但事实并非如此。过去,我已经做出了承诺(不是jQuery)。例如,使用请求促销来请求某些内容,返回响应并将其存储在变量中。

将感谢任何帮助。

我的猜测是归因于jQuery的 Promise类似 JQXHR对象。

await关键字期望有望,并将使用标准的then(也许也许是catch)方法来确定结果。

试试这个

return $.post(...).then(() => true, () => false)

另外,请使用返回实际Promise实例的jQuery以外的其他内容。即使是本机fetch API也可能更适合。

最新更新