#javascript #php #ajax
#javascript #php #ajax
Вопрос:
Я попытался передать свои данные из ajax в php, а затем в базу данных, но я нахожу ошибки, говорящие об ошибке uncaught — "undefined function is_ajax"
…………..мой js-код…………….
var form = document.getElementById('form');
form.addEventListener("submit",validateForm)
function validateForm(e) {
e.preventDefault();
var name = document.forms["form"]["name"] .value;
var ml = document.forms["form"]["mail"] .value;
var num = document.forms["form"]["number"] .value;
var ctry = document.forms["form"]["country"] .value;
var date_in = document.forms["form"]["date_in"] .value;
var time_in = document.forms["form"]["time_in"] .value;
var time_out = document.forms["form"]["time_out"] .value;
$.ajax({
type: "POST",
url: "data.php",
data:{myname:name,myemail:ml,c_num:num,c_ctry:ctry,in_date:date_in,in_time:time_in,out_time:time_out},
success:function(reply){
var respOutPut = String(reply);
console.log("OutPut:" respOutPut);
if (respOutPut.trim() == "not Ajax Request"){
}
},
error: function () {
console.log("Error:");
}
});
}
.......php..........
<?php
if (is_ajax()) {
if( $_POST["myname"] amp;amp; isset($_POST["myemail"]) amp;amp;
isset($_POST["c_num"]) amp;amp; isset($_POST["c_ctry"]) amp;amp;
isset($_POST["in_date"]) amp;amp; isset($_POST["in_time"]) amp;amp;
isset($_POST["out_time"])){
$name = $_POST["myname"];
$email = $_POST["myemail"];
$number = $_POST["c_num"];
$country = $_POST["c_ctry"];
$arrival_d = $_POST["in_date"];
$arrival_t = $_POST["in_time"];
$dep_t = $_POST["out_time"];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "triangle";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error . "<br>");
}
echo "Connected successfully<br>";
// Create database
$sql = "CREATE DATABASE IF NOT EXISTS triangle";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully<br>";
} else {
echo "Error creating database: " . $conn->error."<br>";
}
$conn->close();
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error."<br>");
}
// sql to create table
$sql = "CREATE TABLE IF NOT EXISTS Customer (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) NOT NULL,
number VARCHAR(50),
country VARCHAR(50),
date_in VARCHAR(50),
time_in VARCHAR(50),
dep_time VARCHAR(50))";
if ($conn->query($sql) === TRUE) {
echo "Table customer created successfully<br>";
} else {
echo "Error creating customer table: " . $conn->error."<br>";
}
$conn->close();
$sql = "INSERT INTO customer (name, email, number,country,date_in,time_in,dep_time)
VALUES ('$_POST[myname]','$_POST[myemail]','$_POST[c_num]','$_POST[c_ctry]','$_POST[in_date]','$_POST[in_time]','$_POST[out_time]')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully<br>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error."<br>";
}
$conn->close();
}
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) amp;amp;
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
}
?><?php
if (is_ajax()) {
if( $_POST["myname"] amp;amp; isset($_POST["myemail"]) amp;amp;
isset($_POST["c_num"]) amp;amp; isset($_POST["c_ctry"]) amp;amp;
isset($_POST["in_date"]) amp;amp; isset($_POST["in_time"]) amp;amp;
isset($_POST["out_time"])){
$name = $_POST["myname"];
$email = $_POST["myemail"];
$number = $_POST["c_num"];
$country = $_POST["c_ctry"];
$arrival_d = $_POST["in_date"];
$arrival_t = $_POST["in_time"];
$dep_t = $_POST["out_time"];
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "triangle";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error . "<br>");
}
echo "Connected successfully<br>";
// Create database
$sql = "CREATE DATABASE IF NOT EXISTS triangle";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully<br>";
} else {
echo "Error creating database: " . $conn->error."<br>";
}
$conn->close();
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error."<br>");
}
// sql to create table
$sql = "CREATE TABLE IF NOT EXISTS Customer (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) NOT NULL,
number VARCHAR(50),
country VARCHAR(50),
date_in VARCHAR(50),
time_in VARCHAR(50),
dep_time VARCHAR(50))";
if ($conn->query($sql) === TRUE) {
echo "Table customer created successfully<br>";
} else {
echo "Error creating customer table: " . $conn->error."<br>";
}
$conn->close();
$sql = "INSERT INTO customer (name, email, number,country,date_in,time_in,dep_time)
VALUES ('$_POST[myname]','$_POST[myemail]','$_POST[c_num]','$_POST[c_ctry]','$_POST[in_date]','$_POST[in_time]','$_POST[out_time]')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully<br>";
} else {
echo "Error: " . $sql . "<br>" . $conn->error."<br>";
}
$conn->close();
}
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) amp;amp;
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
}
?>
Комментарии:
1. javascript и php не имеют возможности взаимодействовать друг с другом, поскольку javascript запускается в браузере пользователя, а php является языком на стороне сервера. что вы должны проверять, так это то, что нажата кнопка отправки, а затем обрабатывать данные
2. в коде php
is_ajax()
метод не существует, поэтому вы получаете эту ошибку, и это правильно.3. использовать validate.js в методах проверки формы на стороне клиента и php на стороне сервера 1. validate.js 2. проверка php
4. Почему вы создаете функцию is_ajax() два раза?
Ответ №1:
Вы можете отправить свои данные формы следующим образом
var formData = $(form).serializeArray();
$.ajax({
type: "POST",
url: "data.php",
data:{formData},
success:function(reply){
var respOutPut = String(reply);
console.log("OutPut:" respOutPut);
if (respOutPut.trim() == "not Ajax Request"){
}
},
error: function () {
console.log("Error:");
}
});
И в вашем php вы можете получить их с помощью $ _POST .