代码之家  ›  专栏  ›  技术社区  ›  Fatt Sky

返回axios get错误([[PromiseState]]:“拒绝”)

  •  0
  • Fatt Sky  · 技术社区  · 2 年前

    我想将两个带符号的参数传递到API中(使用Axios get),但出现了错误 [[PromiseState]]:“拒绝” . 如果将两个不带符号的参数传递到API中,就可以工作并输出消息 [[PromiseState]]:“已履行” .

    控制台日志(带符号的两个参数)错误结果如下,两个参数示例如下: companyName=ABC SDN BHD !!!!@@@@#$%^&*() branchName=ABC !@#$%^&*()_ :

    Promise {<pending>}
    [[Prototype]]: Promise
    [[PromiseState]]: "rejected"
    [[PromiseResult]]: Error: Request failed with status code 400 at createError (http://localhost:3005/static/js/43.chunk.js:215670:15) at settle (http://localhost:3005/static/js/43.chunk.js:215891:12) at XMLHttpRequest.handleLoad (http://localhost:3005/static/js/43.chunk.js:215145:7)
    config: {url: '/api/branch_detail?companyName=ABC SDN BHD !!!!@@@@#$%^&*()&branchName=ABC !@#$%^&*()_', method: 'get', headers: {…}, transformRequest: Array(1), transformResponse: Array(1), …}
    isAxiosError: true
    request: XMLHttpRequest {readyState: 4, open: ƒ, send: ƒ, setRequestHeader: ƒ, onreadystatechange: ƒ, …}
    response:
    config: {url: '/api/branch_detail?companyName=ABC SDN BHD !!!!@@@@#$%^&*()&branchName=ABC !@#$%^&*()_', method: 'get', headers: {…}, transformRequest: Array(1), transformResponse: Array(1), …}
    data:
    errors: {branchName: Array(1)}
    status: 400
    title: "One or more validation errors occurred."
    traceId: "00-a1135d9712bfaf41829960bc64228418-fd38e977891bca4a-00"
    type: "https://tools.ietf.org/html/rfc7231#section-6.5.1"
    [[Prototype]]: Object
    headers: {connection: 'close', content-encoding: 'gzip', content-type: 'application/json; charset=utf-8', date: 'Mon, 11 Jul 2022 03:38:54 GMT', transfer-encoding: 'chunked', …}
    request: XMLHttpRequest {readyState: 4, open: ƒ, send: ƒ, setRequestHeader: ƒ, onreadystatechange: ƒ, …}
    status: 400
    statusText: "Bad Request"
    [[Prototype]]: Object
    toJSON: ƒ ()
    message: "Request failed with status code 400"
    stack: "Error: Request failed with status code 400\n    at createError (http://localhost:3005/static/js/43.chunk.js:215670:15)\n    at settle (http://localhost:3005/static/js/43.chunk.js:215891:12)\n    at XMLHttpRequest.handleLoad (http://localhost:3005/static/js/43.chunk.js:215145:7)"
    [[Prototype]]: Object
    constructor: ƒ Error()
    message: ""
    name: "Error"
    toString: ƒ toString()
    

    和branchName= 用户21

    [[Prototype]]: Promise
    [[PromiseState]]: "fulfilled"
    [[PromiseResult]]: Object
    config: {url: '/api/branch_detail?companyName=ABC SDN BHD 72&branchName=USER21', method: 'get', headers: {…}, transformRequest: Array(1), transformResponse: Array(1), …}
    data: {id: '1f469c57-c53f-4ef3-e0f7-08da59982377', tenantID: '0921295e-41dd-4be8-0d4d-08da3d8e0c78', code: 'USER21', phoneNo: '60196588555', email: 'ason5861+80003@gmail.com', …}
    headers: {connection: 'close', content-encoding: 'gzip', content-type: 'application/json; charset=utf-8', date: 'Mon, 11 Jul 2022 03:42:59 GMT', transfer-encoding: 'chunked', …}
    request: XMLHttpRequest
    open: ƒ shim()
    send: ƒ shim()
    setRequestHeader: ƒ shim()
    onabort: ƒ handleAbort()
    onerror: ƒ handleError()
    onload: null
    onloadend: null
    onloadstart: null
    onprogress: null
    onreadystatechange: ƒ handleLoad()
    ontimeout: ƒ handleTimeout()
    readyState: 4
    response: "{\"id\":\"1f469c57-c53f-4ef3-e0f7-08da59982377\",\"tenantID\":\"0921295e-41dd-4be8-0d4d-08da3d8e0c78\",\"code\":\"USER21\",\"phoneNo\":\"60196588555\",\"email\":\"ason5861+80003@gmail.com\",\"contactPerson\":\"ALEX CHONG\",\"contactPersonPhone\":\"60195678994\",\"contactPersonEmail\":\"ason5861+80003@gmail.com\",\"address\":\"No. 129, Jalan Bangsar\",\"city\":\"Selangor\",\"state\":\"Kuala Lumpur\",\"postcode\":\"59200 \",\"hasLogo\":false,\"logoType\":\"\",\"practiceType\":\"Medical\",\"practiceTypeID\":\"b95b2b99-2d9a-49cf-bed6-08d92b3484f9\",\"subscritiopnID\":\"25cbc36d-e591-4d26-48e7-08da599933c4\",\"planID\":20,\"planName\":\"Trial\",\"status\":\"Active\",\"startDate\":\"2022-06-29T14:32:56\",\"expiredDate\":\"2022-12-29T00:00:00\",\"renewalCycle\":\"Monthly\",\"totalPrice\":2.0000}"
    responseText: "{\"id\":\"1f469c57-c53f-4ef3-e0f7-08da59982377\",\"tenantID\":\"0921295e-41dd-4be8-0d4d-08da3d8e0c78\",\"code\":\"USER21\",\"phoneNo\":\"60196588555\",\"email\":\"ason5861+80003@gmail.com\",\"contactPerson\":\"ALEX CHONG\",\"contactPersonPhone\":\"60195678994\",\"contactPersonEmail\":\"ason5861+80003@gmail.com\",\"address\":\"No. 129, Jalan Bangsar\",\"city\":\"Selangor\",\"state\":\"Kuala Lumpur\",\"postcode\":\"59200 \",\"hasLogo\":false,\"logoType\":\"\",\"practiceType\":\"Medical\",\"practiceTypeID\":\"b95b2b99-2d9a-49cf-bed6-08d92b3484f9\",\"subscritiopnID\":\"25cbc36d-e591-4d26-48e7-08da599933c4\",\"planID\":20,\"planName\":\"Trial\",\"status\":\"Active\",\"startDate\":\"2022-06-29T14:32:56\",\"expiredDate\":\"2022-12-29T00:00:00\",\"renewalCycle\":\"Monthly\",\"totalPrice\":2.0000}"
    responseType: ""
    responseURL: "http://localhost:3005/api/branch_detail?companyName=ABC%20SDN%20BHD%2072&branchName=USER21"
    responseXML: null
    status: 200
    statusText: "OK"
    timeout: 0
    upload: XMLHttpRequestUpload {onloadstart: null, onprogress: null, onabort: null, onerror: null, onload: null, …}
    withCredentials: false
    [[Prototype]]: XMLHttpRequest
    status: 200
    statusText: "OK"
    

    export function getBranchDetail(companyName, branchName) {  
      return axios.get(GET_BRANCH_DETAIL_URL + companyName + "&branchName=" + branchName);
    }
    

    希望有人能指导我如何解决 [[PromiseState]]:“拒绝” 这个问题。谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   Phil    2 年前

    您的查询参数不是 encoded 正确地Axios为此提供了一个方便的配置属性。

    companyName URL中的参数

    export const GET_BRANCH_DETAIL_URL = "/api/branch_detail";
    

    然后使用 params 配置

    axios.get(GET_BRANCH_DETAIL_URL, {
      params: { companyName, branchName }
    });
    

    这将正确地向URL发出请求 /api/branch_detail?companyName=ABC+SDN+BHD+%21%21%21%21%40%40%40%40%23%24%25%5E%26*%28%29&branchName=ABC+%21%40%23%24%25%5E%26*%28%29_