我正在尝试将一个AJAX请求发布到PHP类函数,遵循本主题中发布的建议:jQuery Ajax POST example with PHP
我不知道是否有可能将AJAX查询直接发布到类函数中,所以我写了一个小的'controller'类型文件来处理数据,然后调用类函数。
product_controller.php:
switch ($_GET['action'])
{
case "create":
$product_name = isset($_POST['bar']) ? $_POST['bar'] : null;
$product = new Product($DB_con);
$product->new_product($product_name);
break;
case "update":
//Stuff
break;
case "delete":
//Stuff
break;
}
这是实际的类文件:
class.product.php
<?php
class Product
{
private $db;
private $error;
function __construct($DB_con)
{
$this->db = $DB_con;
}
//New product function
private function new_product($product_name)
{
try
{
//Try to insert the data into the database
$stmt = $this->db->prepare("INSERT INTO products(product_name) VALUES(:product_name)");
$stmt->bindParam(":product_name", $product_name);
$stmt->execute();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
}
}
这是实际的形式/ jquery:
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
</div>
<script>
var request;
$("#foo").submit(function(event){
event.preventDefault();
if (request) {
request.abort();
}
var $form = $(this);
var $inputs = $form.find("input, select, button, textarea");
var serializedData = $form.serialize();
$inputs.prop("disabled", true);
request = $.ajax({
url: "product_controller.php?action=create",
type: "post",
data: serializedData
});
request.done(function (response, textStatus, jqXHR){
console.log("Success!");
console.log(serializedData);
});
request.fail(function (jqXHR, textStatus, errorThrown){
console.error("The following error occurred: "+ textStatus, errorThrown);
});
request.always(function () {
$('#spinner_test').show();
$inputs.prop("disabled", false);
});
});
</script>
据我所知,AJAX请求很好,当提交表单时显示“成功”消息,但数据没有插入到数据库中,所以我的猜测是问题在于类/控制器文件,但我看不出它是什么?
我也尝试过按照其他几个主题发布的建议,但无济于事,所以对此有任何帮助都非常感谢。
编辑: dbconfig.php
<?php
session_start();
$DB_host = "localhost";
$DB_user = "root";
$DB_pass = "";
$DB_name = "fcrn";
try
{
$DB_con = new PDO("mysql:host={$DB_host};dbname={$DB_name}",$DB_user,$DB_pass);
$DB_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
include_once 'class.product.php';
答案 0 :(得分:0)
首先你不能发布到一个类函数,其次你没有发布到一个类函数,但你发布到一个文件,虽然它链接到另一个类函数,这是好的。如果你使用类自动加载,我希望一旦你需要你的product_controller.php文件中不会自动加载的class.product.php文件就可以正常工作。