【发布时间】:2014-04-10 12:58:23
【问题描述】:
我已经碰壁好几天了,似乎无法解决这个简单的问题。
我想通过 ajax 进行简单的插入。由于我是 PHP 新手,我看过很多示例,阅读了 http 和 php 的 POST 内容,阅读了 jquery.ajax 文档,并且我也知道 PDO 文档。 仍然找不到它为什么不起作用。
代码如下,非常简单:
索引
<body>
<form id="myForm" method="post" action="" >
Nome:
<input type="text" name="nome" required />
<br/>
Tipo:
<input type="text" name="tipo" required />
<br/>
<input type="submit" name="submit" value="save" id="sub"/>
</form>
<script src="script/jquery-2.1.0.js" type="text/javascript"></script>
<script src="script/ajaxInclude.js" type="text/javascript"></script>
</body>
Ajax 调用
$(document).ready(function(){
$('#myForm').submit(function(){
var data = $(this).serialize();
$.ajax({
url: "DAO/insert.php",
type: "POST",
data: data,
success: function( data )
{
alert( data );
},
error: function(){
alert('ERRO');
}
});
return false;
});
});
配置:
<?php
define('HOST', '127.0.0.1');
define('DB_NAME','test');
define('PORT', '3306');
define('USER','root');
define('PASS','');
$dsn = 'mysql:host='.HOST.'; port='.PORT.'; dbname='.DB_NAME;
try {
$bd = new PDO($dsn, USER, PASS);
// $bd->setAttribute(PDO::ATT_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Houve algum erro no Banco de Dados';
}
?>
插入:
<?php
require_once('config.php');
if(isset($_POST['submit'])){
$nome = $_POST['nome'];
$tipo = $_POST['tipo'];
$sql = 'INSERT INTO produto(id, nome, tipo, criado_em) ';
$sql .= ' VALUES (NULL, :nome, :tipo, NOW())';
try {
$query = $bd->prepare($sql);
$query->bindValue(':nome', $nome, PDO::PARAM_STR);
$query->bindValue(':tipo', $tipo, PDO::PARAM_STR);
if($query->execute()){
echo "Dados inseridos com sucesso";
}else{
echo "Falha na inser��o de dados";
}
} catch (Exception $e) {
echo $e->getMessage();
}
}
?>
我已经更改了一百万次,但我什至无法从插入中获得回报,我只是从 ajax 的成功中获得警报。
很抱歉,这个简单的问题,但我有一些不好的时间。我正在尝试使用我发现的最佳实践来做所有事情,但还没有找到一个可靠的例子。
【问题讨论】:
-
首先您必须了解没有像“通过 AJAX 插入 PHP PDO”这样的东西。它是 AJAX 或 PDO。他们从不干涉。所以,首先决定你的问题属于哪个领域
-
您应该在 Javascript 控制台中看到一个错误。您在 Javascript 中使用
$_POST,但这是一个 PHP 超全局。它在 Javascript/jQuery 中不存在。