как я могу получить данные формы, проверить их с помощью javascript и отправить в базу данных с помощью php

#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 .