我已经知道这是一个服务器错误,我无法弄清楚为什么会发生这种情况。
档案结构:
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>任何形式的帮助都将是非常感谢的!
发布于 2018-02-16 19:38:50
由于您使用的是这样的路径,您需要修改包含。
您正在从视图文件中测试project_manager.php中的方法,该视图文件包含在索引文件中。因此,您可能不会在那里遇到路径问题,因为路径是从索引文件所在的位置引用的。
但是,当ajax试图从ajax/register.php,读取某些内容时,文件路径不再基于与索引文件相同的位置,这就是为什么您应该直接测试这个文件。
您将需要在您的register.php文件中执行以下操作,并且可能会围绕处理其他文件中的其他包含内容的方式进行更改,因为这可能无法工作,因为您现在正在基于ajax目录引用文件。
include_once '../config/config.php';这将破坏引用它的任何其他内容(索引),但您需要这样做才能使ajax寄存器php页面暂时工作:
include "../classes/project_manager.php";您可以查看下面的文章,了解如何处理包含的内容:
让PHP为您发布错误和警告到浏览器,这样您就可以读取它们,而不是看到500个内部服务器错误页面。
https://stackoverflow.com/questions/48833656
复制相似问题