簡體   English   中英

jQuery .post不返回完成和失敗的數據

[英]jQuery .post doesn't return data in done and 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()中的return語句不起作用。 在isAddressValid()之后,如果地址正確,則addressValid為'OK',否則為空。 這有很多問題-首先是它無視我的return true; 完全。 第二個是,當地址無效時,服務器返回400,並且對addressValid完全不返回任何內容。

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

從jQuery 1.5開始,所有jQuery的Ajax方法都返回XMLHTTPRequest對象的超集。 $ .get()返回的此jQuery XHR對象或“ jqXHR”實現Promise接口,為其提供Promise的所有屬性,方法和行為(有關更多信息,請參見Deferred對象)。

所以看來我在做什么應該起作用。 我認為諾言將用我的布爾返回值解決,但事實並非如此。 我過去曾做過Promise(不是jQuery)。 例如,使用request-promise請求某些內容,返回響應並將其存儲在變量中。

不勝感激。

我的猜測是這是由於jQuery的類似於 promise的jqXHR對象所致。

關鍵字await期望一個諾言,並且將使用then的標准方法(可能是catch方法)來確定結果。

試試這個

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

或者,使用jQuery以外的其他東西返回實際的Promise實例。 甚至本機fetch API可能更適合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM