Как получить доступ к PHP функциям вне текущего PHP файла при использовании Ajax? - PullRequest
2 голосов
/ 02 апреля 2020

Можно ли использовать вызов Ajax для отправки формы в файл PHP, где она затем использует функции из отдельного файла PHP, которые не объявлены в файле, вызываемом Ajax ?

В моем случае я использую файл init. php, который содержит соединение MySQL, и использую include () для включения функций для MySQL, Page Logi c и Обработки пользователей. .

init. php

session_start();
$servername = "";
$username = "";
$password = "";
$database = "";
$conn = true;

$conn = mysqli_connect($servername, $username, $password, $database);

//Include functions for MYSQL
include('functions/fn_mysql.php');
//Include functions for Page Logic
include('functions/fn_pages.php');
//Include functions to handle users
include('forms/users.php');

Например, простой HTML Form.

<form id="fileUpload" method="post" action="" enctype="multipart/form-data">
    <input type="hidden" name="dispatch" value="file_upload" />
    <label for="fileType">What kind of document is this?</label>
    <select id="fileType" name="fileType">
        <option value="PDF">PDF</option>
        <option value="DOC">DOC</option>
    </select>
    <input type="submit" name="submit_upload" value="Submit" />
</form>

script. js

Файл, используемый для отправки формы.

$("#fileUpload").on('submit', function(e) {
    e.preventDefault();
        $.ajax({
            type: 'POST',
            url: 'users.php',
            data: new FormData(this),
            dataType: 'json',
            contentType: false,
            cache: false,
            processData: false,
        });

пользователей. php

Этот файл принимает вызов Ajax и использует функцию из отдельного PHP файла с именем fn_ mysql. php будет вставлен в БД.

if ($_POST['dispatch'] == 'file_upload') {
   // process to DB
   $sql = "INSERT INTO doc_attributes (?u)";
   $insert_array = array ();
   $add = db_insert($sql, $insert_array);
   if (!empty ($add)) {
       // Added
   }

Теперь, когда пользователь отправляет эту форму, данные отправляются в файл пользователей. php. Но теперь не может получить доступ к функциям, описанным в файле fn_ mysql. php, поскольку они не определены.

Без вызова Ajax это работает как задумано. Использование этого метода разделения файлов для отделения функций от форм невозможно с Ajax?

1 Ответ

2 голосов
/ 02 апреля 2020

Просто включите «библиотеку» (PHP файл, определяющий необходимые вам функции):

include "/path/to/library.php";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...