web-dev-qa-db-fra.com

Axios affichant des paramètres non lus par $ _POST

J'ai donc ce code:

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

À l'origine, j'avais le axios.post Normal, mais j'ai changé pour cela parce que je pensais que c'était peut-être un problème d'en-tête. Cependant, je ne détecte toujours rien dans mon $_REQUEST Ni $_POST. Cependant, il reçoit des données dans file_get_contents("php://input").

Une idée de ce qui ne va pas?

Modifier

D'accord, je pense que je sais ce qui ne va pas. Il le publie en tant qu'objet json, il ne peut donc être lu que dans l'entrée php: //. Comment puis-je le changer en une chaîne normale dans axios?

21
A. Lau

De la documentation (je n'ai pas conservé de liens dans le matériel cité):

Utilisation du format application/x-www-form-urlencoded

Par défaut, axios sérialise les objets JavaScript en JSON. Pour envoyer des données au format application/x-www-form-urlencoded à la place, vous pouvez utiliser l'une des options suivantes.

Navigateur

Dans un navigateur, vous pouvez utiliser l'API URLSearchParams comme suit:

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

Notez que URLSearchParams n'est pas pris en charge par tous les navigateurs, mais il existe un polyfill disponible (assurez-vous de polyfill l'environnement global).

Vous pouvez également encoder des données à l'aide de la bibliothèque 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 
});

ou

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

Vous pouvez utiliser jQuery.param

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

Vous pouvez maintenant utiliser postdata a votre paramètre de publication

0