web-dev-qa-db-ja.com

$ _POSTによって読み取られないAxios投稿パラメーター

だから私はこのコードを持っています:

_axios({
    method: 'post',
    url,
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
    data: {
        json,
        type,
    }   
})  
_

もともとは通常の_axios.post_でしたが、ヘッダーの問題であると考えたため、これに変更しました。ただし、まだ_$_REQUEST_も_$_POST_でも何も検出していません。ただし、file_get_contents("php://input")でデータを受信して​​います。

何が間違っているのでしょうか?

編集

さて、何が悪いのか知っていると思います。 jsonオブジェクトとして投稿しているため、php:// inputでのみ読み取ることができます。 axiosで通常の文字列に変更するにはどうすればよいですか?

21
A. Lau

ドキュメント から(引用資料にリンクを保存していません):

Application/x-www-form-urlencoded形式を使用する

デフォルトでは、axiosはJavaScriptオブジェクトをJSONにシリアル化します。代わりにapplication/x-www-form-urlencoded形式でデータを送信するには、次のオプションのいずれかを使用できます。

ブラウザ

ブラウザでは、URLSearchParams APIを次のように使用できます。

var params = new URLSearchParams();
params.append('param1', 'value1');
params.append('param2', 'value2');
axios.post('/foo', params); 

URLSearchParamsはすべてのブラウザでサポートされているわけではありませんが、利用可能なポリフィルがあることに注意してください(グローバル環境を必ずポリフィルしてください)。

または、qsライブラリを使用してデータをエンコードできます。

var qs = require('qs');
axios.post('/foo', qs.stringify({ 'bar': 123 }));
39
Quentin
var params = {
    data1: 'string',
}

axios.post(url, params).then(function(response) {
    //code here 
});

または

axios.post(url, {data1: 'string' }).then(function(response) {
    //code here 
});

api

$_POST = json_decode(file_get_contents("php://input"),true);
echo $_POST['data1'];
13
Pedz

JQuery.paramを使用できます

postdata = $.param({param1: 'value1', param2:'value2'})

Postdataにpostパラメーターを使用できるようになりました