我正在使用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的语法。我想我只是在这里想念些小东西。
答案 0 :(得分:2)
您是正确的。您不应两次运行相同的ajax
调用。相反,您可以在同一done
调用中将fail
和ajax
回调链接在一起。
示例:
$(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;
});