2016-11-23 3 views
1

Hallo Ich versuche, Post Variablen meine API zu senden und ich nicht die Post-Daten in der PHP-Datei bekommenin Fetch nativen react nicht den Pfosten senden

Das ist mein nativen Code reagieren ist:

let data = { 
    method: 'POST', 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
    }, 
    body: JSON.stringify({ 
     'firstname': 'test', 
    }), 
} 
fetch(GLOBALS.API + '/registerApi.php?key=' + GLOBALS.KEY, data) 
.then((response) => response.json()) 
.then((responseJson) => { 
    Alert.alert(
     'Alert Title', 
     responseJson.output 
    ) 

}) 
.catch((error) => { 
    console.error(error); 
}); 

es Rückkehr mich leer: []

$array = array(
    "output" => json_encode($_POST) 
); 
$output = json_encode($array); 
die($output); 

Wenn ich $_REQUEST verwenden es Rückkehr mir nur die key get Parameter ohne firstname eins.

Antwort

4

Im PHP, Sie

$json = file_get_contents('php://input'); 
$obj = json_decode($json, TRUE) 
3

JSON.stringify verwenden müssen nicht für mich arbeiten, versuchen Sie stattdessen mit Formdata Daten zur Vorbereitung für den Versand. Hier ist Beispiel:

import FormData from 'FormData'; 

var formData = new FormData(); 
formData.append('firstname', 'test'); 

let data = { 
    method: 'POST', 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json', 
    }, 
    body: formData 
} 

fetch(api_url, data) 
.then((response) => response.json()) 
.then((responseJson) => { console.log('response:', responseJson); }) 
.catch((error) => { console.error(error); }); 
+0

Können Sie mir bitte einen Link für dieses Modul geben? 'importieren FormData von 'FormData';' – Kholiavko

+0

Und wie erhalten Sie Daten auf der Serverseite in Ihrem Fall? – Kholiavko

+1

Hier geht es um Fetch, und Fetch wird auf der Client-Seite verwendet. Ist bereits in React Native, dies ist kein externes Modul. –

0

Das Problem ist JSON.stringify. Verwenden Sie stattdessen FormData. Keine Notwendigkeit zu installieren, es ist nicht 3rd Party. Für mich geht das.

import FormData from 'FormData'; 

var formData = new FormData(); 

formData.append('username', 'Andy'); 

... 

{ 
    ... 
    body: formData 
    ... 
}