AJAX请求正常,但没有数据插入到数据库中

时间:2017-07-18 07:37:31

标签: javascript php jquery ajax database

我尝试使用ajax和php将数据插入数据库。但是,我不知道它为什么不起作用。我测试了html文件,所有itemName,类别,价格都有效,php文件返回我"成功"只是插入数据库的数据是空的。

$(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";
  }
?>

2 个答案:

答案 0 :(得分:0)

您不能将date用作表格列。 date是预定义/保留的关键字。将日期列的名称更改为数据库并修改sql query,然后重试。

答案 1 :(得分:0)

替换此代码:

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)

因为&amp;是一个按位运算符但是&amp;&amp;是逻辑运算符,所以在这种情况下我们总是使用逻辑运算符。