使用Ajax时,如何访问当前PHP文件之外的PHP函数?

使用Ajax时,如何访问当前PHP文件之外的PHP函数?,php,jquery,html,ajax,Php,Jquery,Html,Ajax,是否可以使用Ajax调用将表单提交到PHP文件,然后使用单独PHP文件中的函数提交表单,这些函数在Ajax调用的文件中没有声明 在我的例子中,我使用一个init.php文件来保存MySQL连接,并使用include()来包含MySQL、页面逻辑和处理用户的函数 init.php session_start(); $servername = ""; $username = ""; $password = ""; $database = ""; $conn = true; $conn = mysq

是否可以使用Ajax调用将表单提交到PHP文件,然后使用单独PHP文件中的函数提交表单,这些函数在Ajax调用的文件中没有声明

在我的例子中,我使用一个init.php文件来保存MySQL连接,并使用include()来包含MySQL、页面逻辑和处理用户的函数

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 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>
users.php

此文件接受Ajax调用并使用函数 PHP将从一个名为fn_mysql.PHP的单独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
   }
现在,当用户提交此表单时,数据将被发送到users.php文件。但是,现在无法访问fn_mysql.php文件中详细说明的函数,因为这些函数尚未定义

如果没有Ajax调用,这将按预期工作。使用这种分离文件的方法来保持函数与表单的分离,这在Ajax中是不可能的吗?

只需包含“库”(定义所需函数的PHP文件):


users.php
将要求您对所有必需的文件使用
include”/path/to/file.php“
。为什么如果我完全删除ajax调用,就不会出现错误?这些文件包含在init.php文件中。这就是为什么我感到困惑的原因@RamRaiderThis不能解决这个问题。我只收到一个致命错误,说明您无法重新声明方法。我已经完全了解如何使用include(“/path/to/library.php”)包含库,并且它已经包含在init.php文件中。我花时间使用echo getcwd()获取文件路径;在fn_mysql.php文件中。试图在users.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
   }
include "/path/to/library.php";