I'm trying to do a signup form in my nativescript app, i'm using fetch api to POST the data. But right now it just populates the database without actually uploading the data. this is what i've tried
JS
const phpData = {
email: "user@nativescript.org",
password: "password",
name: "Adekunle Adeyeye",
number: "07019888741",
}
/*email = viewModel.getViewById("email").value;
password = viewModel.getViewById("password").value;
name = viewModel.getViewById("name").value;
number = viewModel.getViewById("number").value;*/
fetch("https://goodsbuy.000webhostapp.com/register.php", {
method: 'POST',
body: JSON.stringify(phpData),
headers:{
"content-type": "application/json; charset=UTF-8"
}
})
.then(response => response.json())
.then(json => console.log(json))
.then((phpData) => {
console.log('Success:', phpData);
this.set("processing", false);
Toast.makeText("Successful").show();
this.isLoggingIn = true;
})
.catch((error) => {
console.error('Error:', error);
this.set("processing", false);
Toast.makeText("Account Already exists").show();
this.isLoggingIn = false;
});
PHP
$email = $_POST['email'];
$password = $_POST['password'];
$name = $_POST['name'];
$number = $_POST['number'];
$conn = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO comedyapp(`name`, `email`, `number`, `password`) VALUES ('$name', '$email', '$number', '$password')";
if ($conn->query($sql) === TRUE) {
echo '{"items":'. json_encode('Good') .'}';
} else {
echo '{"items":'. json_encode('Bad') .'}';
}
Please assist me.
Replace
$email = $_POST['email'];
$password = $_POST['password'];
$name = $_POST['name'];
$number = $_POST['number'];
with
extract(json_decode(file_get_contents('php://input'),true));
it will automatically declares the variables.