簡體   English   中英

對 PHP 的 jQuery AJAX 請求返回錯誤 500

[英]jQuery AJAX request to PHP returns error 500

我已經知道這是服務器錯誤,我無法弄清楚為什么會發生這種情況。

文件結構:

project_manager
    >ajax
        >register.php
    >classes
        >project_manager.php
    >config
        >config.php
    >js
        >scripts.js
    >views
        >register.php
    >index.php

我的 JavaScript 如下:

if(valid){
    var data = $('#register-form').serializeArray();
    request = $.ajax({
        url: "ajax/register.php",
        type: "post",
        data: data,
        cache: false,
        datatype:'json',
        headers:{"cache-action":"no-cache"}
    }).done(function(data) {
        if(data.success){
            alert('class function worked');
        }
    }).fail(function(data){
        alert('fail')
    });
}

我的PHP ajax文件如下:

<?php
    include_once 'config/config.php';

    echo $project_manager->registerUser($_POST);
?>

我的函數所在的PHP類文件如下:

class project_manager{

    public $connection;

    public function registerUser($params){
        // Prepare and Bind
        $stmt = $this->connection->prepare('call addUser(?,?,?,?,?,?)');
        $stmt->bind_param("ssssss", $firstname, $surname, $displayname, $email, $password, $role);

        $firstname = $params['firstname'];
        $surname = $params['surname'];
        $displayname = $params['firstname'] + $params['surname'];
        $email = $params['email'];
        $password = $params['password'];
        $role = "test";

        $stmt->execute();
        $stmt->close();

        return json_encode(array("success"=>true));
    }

}

以下是我的配置文件:

<?php
    include "classes/project_manager.php";
    $connection = mysqli_connect($servername, $username, $password, $dbname);

    // Check to see if the connection failed
    if($connection === false){
        die("ERROR: Could not connect. ". mysqli_connect_error());
    }

    session_start();

    $project_manager = new project_manager();
    $database = new database();
    $database->connection = $connection;
    $project_manager->connection = $connection;
?>

我的注冊查看代碼如下:

<?php
    $params['firstname'] = 'test';//change with expected values
    $params['email'] = 'test';//change with expected values
    $params['surname'] = 'test';//change with expected values
    $params['password'] = 'test';//change with expected values

    //echo $project_manager->registerUser($_POST);
    echo $project_manager->registerUser($params);
?>



<form id="register-form" class="user-form">
     <h2 style="text-align: center; margin-bottom: 30px;">Register an account</h2>
     <div class="col-sm-12">
         <div class="col-sm-6 form-group">
            <input type='text' name="firstname" class="form-control input-md" placeholder="Firstname..."/>
        </div>
        <div class="col-sm-6 form-group">
            <input type='text' name="surname" class="form-control input-md" placeholder="Surname..."/>
        </div>
        <div class="col-sm-6 form-group">
            <input type='password' name="password" class="form-control input-md" placeholder="Please Enter A Password"/>
        </div>
        <div class="col-sm-6 form-group">
             <input type='password' class="form-control input-md" id="password-confirm" placeholder="Please Confirm Password"/>
        </div>
        <div class="col-sm-12 form-group">
            <input type="email" name="email" class="form-control input-md" placeholder="Please Enter An Email Address"/>
        </div>
        <div class="col-sm-12">
            <button type="button" id="register" class="btn btn-default pull-right">Register</button>
        </div>
    </div>
</form>

任何形式的幫助將不勝感激!

由於您正在使用這些路徑,因此您需要修改包含。

您正在測試視圖文件中project_manager.php中的方法,該文件包含在您的索引文件中。 因此,您可能不會在那里遇到路徑問題,因為該路徑是從索引文件所在的同一位置引用的。

但是,當您的 ajax 嘗試從ajax/register.php讀取某些內容時,文件路徑不再基於與索引文件相同的位置,這就是您應該直接測試此文件的原因。

您需要在register.php文件中執行以下操作,並且可能會更改處理其他文件中其他包含內容的方式,因為這可能不起作用,因為您現在正在引用基於ajax目錄的文件.

include_once '../config/config.php';

這將破壞引用它的任何其他內容(索引),但您需要這樣做以使 ajax 注冊 php 頁面暫時工作:

include "../classes/project_manager.php";

您可以查看以下帖子,了解有關如何處理包含的想法:

PHP 包含相對路徑

並讓 PHP 為您向瀏覽器發布錯誤和警告,這樣您就可以閱讀它們而不是看到 500 個內部服務器錯誤頁面。

顯示所有錯誤和警告

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM