axios送信jsonバックグラウンドで受信できない問題を解決する

1691 ワード

問題の説明
axiosの公式サイトの例に従ってjsonの伝達を要求し、バックグラウンドで受け取ったデータは空で、options段階にカードがかかっている.
試し方
最初はインタフェースに問題があると思っていたが、postmanテストを使って、すべて正常で、何も考えられず、issueをたくさん見ても解決できず、headers:{'content-type':'application/json'}を加えても役に立たなかった.
公式サイトによると、jsonはapplication/jsonで処理されたが、卵用はなかったという.その後、JSON.stringify(data)content-typeがフォーム形式に変更されました==
それから自分の前のコードをひっくり返して、书き方が同じで、バージョン番号の问题だと疑って、しかし==ではありません...サービス側と関係がある可能性があることを考慮します.
元のコードは次のとおりです.
import axios from 'axios';

export default function request(url, params) {
    return axios.post(`xxxxxx/${url}`, params)
        .then((response) => {
            console.log('response', response);
            return response;
        })
        .catch((error) => {
            console.log('error', error);
            return error;
        });
}

最后に考えてみるとfetchを使いましょう(确かに使って、やはりこの问题があることを発见して、今深く疑ってサービス侧がパラメータのタイプカードのあまりにも死んで、polyfillの问题があって放弃して、もし知っている小さい仲间があれば伝言を残して私に教えて、ありがとうございます)、本当にだめならajax(promiseにカプセル化して泣く).axiosへのこだわりから、やっと解決策を見つけた.
解決策qsライブラリを追加し、jsonをシーケンス化して渡します.詳細はこのissueを参照してください.
コード:
import axios from 'axios';
import qs from 'qs';

export default function request(url, params) {
    return axios.post(`https://xxxxxxxx/${url}`, qs.stringify(params))
        .then((response) => {
            console.log('response', response);
            return response;
        })
        .catch((error) => {
            console.log('error', error);
            return error;
        });
}