AJAX在向PHP发送数据时总是出错



我有一个AJAX和PHP的问题。AJAX应该向PHP发送数据,但它总是返回错误。即使我注释出性别单选按钮在js ajax和php ajax仍然返回错误。但是在控制台日志的responsetext中,它显示了unos.php的整个HTML代码。请帮助。

HTML:

<form action="" method="POST">
Ime: <input type="text" id="firstName" name="firstName" placeholder="Pera"></br>
Prezime: <input type="text" id="lastName" name="lastName" placeholder="Peric"></br>
Email: <input type="text" id="email" name="email" placeholder="pera@gmail.com"></br>
Gender: </br>
Male<input type="radio" name="gender" value="male" id="male"></br>
Female<input type="radio" name="gender" value="female" id="female"></br>
<input type="button" value="Insert" id="submit">
</form>

JS ABOVE AJAX:

var firstName = document.getElementById("firstName");
var lastName = document.getElementById("lastName");
var email = document.getElementById("email");
var errors = document.getElementById("errors");
var gender = document.querySelector("input[type='radio']:checked");
var firstNameVal = $("#firstName").val();
var lastNameVal = $("#lastName").val();
var emailVal = $("#email").val();
var genderVal = $("input[type='radio']:checked").val();

AJAX:

$.ajax({
type: "POST",
url: "unos.php",
data: {
firstNamePHP: firstNameVal,
lastNamePHP: lastNameVal,
emailPHP: emailVal,
genderPHP: genderVal,
},
dataType: "json",
success: function (response) {
console.log(response);
},
error: function (error) {
console.log(error);
},
});

PHP unos.php:

<?php
$firstName = $_POST["firstNamePHP"];
$lastName = $_POST["lastNamePHP"];
$email = $_POST["emailPHP"];
define("ERROR_FIRSTNAME","Ime mora poceti velikim slovom i mora imati najmanje 3 slova");
define("ERROR_LASTNAME","Prezime mora poceti velikim slovom i mora imati najmanje 3 slova");
define("ERROR_EMAIL","Email se mora zavrsiti sa @gmail.com , @ict.edu.rs ili @yahoo.com");
define("ERROR_GENDER","Morate izabrati pol");
define("REGEX_NAME","/^[A-Z][a-z]{2,}$/");
define("REGEX_EMAIL","/^.{1,15}@(gmail.com|ict.edu.rs|yahoo.com)$/");
check($firstName,REGEX_NAME,ERROR_FIRSTNAME);
check($lastName,REGEX_NAME,ERROR_LASTNAME);
check($email,REGEX_EMAIL,ERROR_EMAIL);
if(isset($_POST["genderPHP"]) AND !empty($_POST["genderPHP"])){
$gender = $_POST["genderPHP"];
}
else {
echo ERROR_GENDER;
}
function check($input,$regex,$error){
if(preg_match($regex,$input) AND isset($input) AND !empty($input)){
echo "Radi </br>";
}
else{
echo $error;
}
}
?>

在您的示例中,您提交JSON,但试图从原始POST数据中获取值。所以,你需要解码JSON

PHP unos.php:

<?php

// Decode AJAX Post JSON to $data array
$data = json_decode(file_get_contents('php://input'));
$firstName = $data["firstNamePHP"]; // or use getArrayValue($data, "firstNamePHP", '');
$lastName = $data["lastNamePHP"]; // or use getArrayValue($data, "lastNamePHP", '');
$email = $data["emailPHP"]; // or use getArrayValue($data, "emailPHP", '');
define("ERROR_FIRSTNAME","Ime mora poceti velikim slovom i mora imati najmanje 3 slova");
define("ERROR_LASTNAME","Prezime mora poceti velikim slovom i mora imati najmanje 3 slova");
define("ERROR_EMAIL","Email se mora zavrsiti sa @gmail.com , @ict.edu.rs ili @yahoo.com");
define("ERROR_GENDER","Morate izabrati pol");
define("REGEX_NAME","/^[A-Z][a-z]{2,}$/");
define("REGEX_EMAIL","/^.{1,15}@(gmail.com|ict.edu.rs|yahoo.com)$/");
check($firstName,REGEX_NAME,ERROR_FIRSTNAME);
check($lastName,REGEX_NAME,ERROR_LASTNAME);
check($email,REGEX_EMAIL,ERROR_EMAIL);
if(isset($data["genderPHP"]) AND !empty($data["genderPHP"])){
$gender = $data["genderPHP"];
}
else {
echo ERROR_GENDER;
}
function check($input,$regex,$error){
if(preg_match($regex,$input) AND isset($input) AND !empty($input)){
echo "Radi </br>";
}
else{
echo $error;
}
}
?>

要获取数组值,我建议您使用像这样的帮助器

function getArrayValue($data, $key, $default = '') {
if (isset($data[$key]) {
return $data[$key];
}
return $default;
}

最新更新