📜  查看引擎设置快递 - Javascript (1)

📅  最后修改于: 2023-12-03 14:55:36.734000             🧑  作者: Mango

查看引擎设置快递 - JavaScript

在电商平台中,快递设置是一个非常重要的功能。当需要查询订单的物流信息时,通常需要使用快递查询接口来获取数据。而如何设置和管理快递,便是我们今天需要讨论的问题。在 JavaScript 中,我们可以使用 XMLHttpRequest 或者 Fetch API 发送 HTTP 请求,获取快递相关的数据。

1. 获取快递公司列表

我们需要获取快递公司的编号和名称列表,以便用户在下单的时候选择需要的快递公司。一般来说,这个列表是由第三方提供的。我们需要使用 HTTP GET 方法去获取这个列表:

const express_url = 'https://api.express.com/companies';

function getExpressCompanies() {
    return fetch(express_url).then(response => {
        if (response.ok) {
            return response.json();
        }
        throw new Error(response.statusText);
    });
}

获取到的数据格式通常是 JSON,我们可以使用 fetchresponse.json() 方法来解析数据。如果请求出错,我们可以使用 throw new Error() 抛出异常。

2. 获取快递物流跟踪信息

在获取到订单的快递公司和快递单号之后,我们需要查询物流跟踪信息。这个信息通常也是由第三方提供的,我们可以使用 HTTP POST 方法发送请求:

const express_query_url = 'https://api.express.com/track';

function searchExpress(express_code, express_no) {
    const body = {code: express_code, express_no: express_no};
    const headers = {'Content-Type': 'application/json'};

    return fetch(express_query_url, {method: 'POST', headers, body: JSON.stringify(body)}).then(response => {
        if (response.ok) {
            return response.json();
        }
        throw new Error(response.statusText);
    });
}

我们将需要查询的快递公司编号和快递单号打包成 JSON 数据,设置请求头的 Content-Typeapplication/json,然后使用 fetch 方法进行请求。注意,这里是 HTTP POST 方法,因此需要传递请求体。

3. 中断请求

有时候,我们发送了一个 HTTP 请求,但是由于网络等原因,无法获取数据。于是,我们需要中断这个请求。在 JavaScript 中,我们可以使用 XMLHttpRequest 的 abort 方法来中断请求:

const xhr = new XMLHttpRequest();
xhr.open('GET', express_url);
xhr.onload = function() {
    console.log(xhr.responseText);
};
xhr.onerror = function() {
    console.log('Request failed');
};
xhr.onabort = function() {
    console.log('Request aborted');
};
xhr.send();

// 中断请求
xhr.abort();

我们先创建一个 XMLHttpRequest 对象,然后使用 open 方法设置请求类型和 URL。然后,我们可以设置一些回调函数,比如 onloadonerroronabort。最后,我们调用 send 方法发送请求,并且在需要中断请求的时候,调用 abort 方法。注意,在 onload 或者 onerror 中中断请求已经不起作用,因此应该在 onabort 中判断是否已经成功中断请求。

以上就是使用 JavaScript 来查看引擎设置快递的方法,希望对大家有所帮助。