AJAX请求工作,但没有数据插入到数据库
我试图通过使用Ajax和PHP插入数据到数据库。但是,我不知道为什么它不起作用。我已经测试了html文件,所有的itemName,category,price都是有效的,php文件只是返回给我“成功”,只是插入数据库的数据是空的。AJAX请求工作,但没有数据插入到数据库
$(document).ready(function(){
var url = "http://domain/addProduct.php?callback=?";
$("#addProduct").click(function() {
var itemName = $("#itemName").val();
var category = $("#select_category").val();
var price = $("#price").val();
var dataString = "$itemName=" + itemName + "&category=" + category + "&price=" + price + "&addProduct=";
if ($.trim(itemName).length > 0 & $.trim(category).length > 0 & $.trim(price).length > 0) {
$.ajax({
type: "POST",
url: url,
data: dataString,
crossDomain: true,
cache: false,
beforeSend: function() {
$("#addProduct").val('Connecting...');
},
success: function(data) {
console.log(data);
if (data == "success") {
alert("Successfully add item");
} else if(data="failed") {
alert("Something Went wrong");
}
}
});
}
return false;
});
});
<?php
header("Access-Control-Allow-Origin: *");
require("config.inc.php");
$name = mysql_real_escape_string(htmlspecialchars(trim($_POST['itemName'])));
$category = mysql_real_escape_string(htmlspecialchars(trim($_POST['category'])));
$price = mysql_real_escape_string(htmlspecialchars(trim($_POST['price'])));
$date = date("d-m-y h:i:s");
$statement = $pdo->prepare("INSERT INTO product(name, category, price, date) VALUES(:name, :category, :price, :date)");
$statement->execute(array(
"name" => $name,
"category" => $category,
"price" => $price,
"date"=>$date
));
if($statement)
{
echo "success";
}
else
{
echo "failed";
}
?>
替换此代码:
dataString="$itemName="+itemName+"&category="+category+"&price="+price+"&addProduct=";
到:
dataString="itemName="+itemName+"&category="+category+"&price="+price+"&addProduct=";
,太替换此代码:
if($.trim(itemName).length>0 & $.trim(category).length>0 & $.trim(price).length>0)
到:
if($.trim(itemName).length>0 && $.trim(category).length>0 && $.trim(price).length>0)
因为&是位运算符,但& &是逻辑运算符,所以在这种情况下,我们总是用逻辑运算符。
不能使用date
为您的表列。 date
是预定义/保留关键字。将日期列的名称更改为数据库并修改您的sql query
,然后重试。
其实我的日期格式为字符串目前,所以现在正在努力,解决的办法是更换“$ ITEMNAME =”数据串“ITEMNAME =”但我不知道为什么 –
因为你得到你的'itemname'在你的php文件中使用'$ _POST ['itemname'];'并在你的ajax请求中声明'$ itemname'。 –
好的,谢谢,但是对于数据字符串中的“&addProduct =”,是否也有必要?我不熟悉这个 –
是你得到任何错误? –
如果您使用准备好的语句,则不需要转义变量。当你使用PDO时你不能使用'mysql_XXX'函数。 – Barmar
插入数据库时,也没有理由使用'htmlspecialchars()'。这应该只在网页上显示时使用,以防止XSS。 – Barmar