我正在使用 asp.net、c# 和 jquery。我正在使用 API。当我收到响应时,我想在成功 (.done) 和失败 (.fail) 时执行某些代码。
但是,我的代码当前同时运行 .done 和 .fail 代码。我确实相信我需要将代码中的 $.ajax(settings)
减少 2 倍至 1 次。我尝试在其中嵌套 .done 和 .fail,但我无法找出正确的语法。
我的问题是在我的 $.ajax(settings).done(function (response)
和 $.ajax(settings).fail(function (xhr)
我的代码目前似乎向 API 提交了两次 POST,因为我调用了两次设置。任何人都可以帮助解决我的问题吗?我需要了解以下代码中 .done 和 .fail 的语法应该是什么。我我想我只是在这里遗漏了一些小东西。
最佳答案
你是对的。您不应该两次运行相同的 ajax
调用。相反,您可以在同一个 ajax
调用中链接 done
和 fail
回调。
示例:
$(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;
});
关于javascript - 对 API POST 使用 .done 和 .fail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60067926/