使用.done和.fail进行API POST

时间:2020-02-05 01:43:12

标签: javascript jquery asp.net

我正在使用asp.net,c#和jquery。我正在使用API​​。当我收到响应时,我想在成功(.done)和失败(.fail)时执行某些代码。

但是,我的代码当前同时运行.done和.fail代码。我相信我需要将$.ajax(settings)从代码中的2倍减少到1倍。我尝试在其中嵌套.done和.fail,但是我无法找出正确的语法。

我的问题是我的js文件中的$.ajax(settings).done(function (response)$.ajax(settings).fail(function (xhr)。我的代码当前似乎两次将POST提交给API,因为我两次调用了设置。谁能解决我的问题?我需要在以下代码中了解.done和.fail的语法。我想我只是在这里想念些小东西。

1 个答案:

答案 0 :(得分:2)

您是正确的。您不应两次运行相同的ajax调用。相反,您可以在同一done调用中将failajax回调链接在一起。

示例:

$(document).ready( () => {
  $.ajax('https://jsonplaceholder.typicode.com/todos/1')
  .done( (data) => console.log(data) )
  .fail( (error) => console.error(error) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

因此,您的代码应改为:

$.ajax(settings).done(function (response) {

        'Get the response from Agile'

        'Payment Response'
        var responseType = response.response.response_type;
        var responseCode = response.response.response_code;
        var responseDesc = response.response.response_desc;

        'Indentification'
        var invoiceCode = "TEST";
        var invoiceInstance = "123";
        var nextNum = "1";
        var responseInvoiceNum = response.reference_id;
        var responseTransactionId = response.transaction_id;

        'Billing Information'
        var responseBillingFirstName = response.billing_address.first_name;
        var responseBillingLastName = response.billing_address.last_name;
        var responseBillingEmail = response.billing_address.email;
        var responseBillingPhone = response.billing_address.phone;
        var responseBillingStreet1 = response.billing_address.physical_address.street_line1;
        var responseBillingStreet2 = response.billing_address.physical_address.street_line2;
        var responseBillingCity = response.billing_address.physical_address.locality;
        var responseBillingState = response.billing_address.physical_address.region;
        var responseBillingZip = response.billing_address.physical_address.postal_code;
        var responseBillingCountry = response.billing_address.physical_address.country;

        'Payment Information'
        var cardType = response.card.card_type;
        var last4digits = response.card.last_4_account_number;
        var responseAmount = response.authorization_amount;


    })
    .fail(function (xhr) {

        var responseType = xhr.responseJSON.response.response_type;
        var responseCode = xhr.responseJSON.response.response_code;
        var responseDesc = xhr.responseJSON.response.response_desc;


    });
相关问题