Javascript 将AJAX数据发布到PHP类函数
我正试图按照本主题中的建议向PHP类函数发布AJAX请求: 我不知道是否可以将AJAX查询直接发布到类函数,因此我编写了一个小型的“控制器”类型文件来处理数据,然后调用类函数 product_controller.php:Javascript 将AJAX数据发布到PHP类函数,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我正试图按照本主题中的建议向PHP类函数发布AJAX请求: 我不知道是否可以将AJAX查询直接发布到类函数,因此我编写了一个小型的“控制器”类型文件来处理数据,然后调用类函数 product_controller.php: switch ($_GET['action']) { case "create": $product_name = isset($_POST['bar']) ? $_POST['bar'] : null; $product = new
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();
}
}
}
首先,您不能发布到类函数,其次,您不是发布到类函数,而是发布到一个文件,尽管它通过类函数链接到另一个,这是可以的。如果您使用类自动加载,我希望在需要product_controller.php文件中的class.product.php文件时,该文件不会自动加载。如果您从方法中回显错误消息(错误做法),则返回一个状态并在开关中检查错误消息。当你在AJAXing时,如果你不小心或者不使用这个console.log(“Success!”),echo会丢失;console.log(序列化数据)
回显返回的数据console.log(“成功!”);控制台日志(响应)代码>还将您的私有函数更改为public@RiggsFolly谢谢你的信息,我已经根据你的建议更新了我的课程@非常感谢,我已经将功能从私人改为公共,但问题仍然存在
<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>
<?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';