0

我正在尝试使用 ajax 和 php 将数据插入数据库,但这不起作用。与数据库的连接正在工作(仅使用 php 进行了尝试)。我的代码的 ajax 部分正在发布并且值是有效的(用 firebug 检查)。我使用 postgresql 作为我的数据库我不知道为什么它不起作用。当我按下评论按钮时它可以工作(我没有错误),但字段中的文本不会进入数据库

这是代码:

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.6.2.min.js">
</script>
<script type="text/javascript">
$(document).ready(function(){

$("#submit").click(function(event) {
var name = $("#name").val();
var title= $('#title').val();
var comment= $('#comment').val();
$.post("comment.php", {name: name, title: title, comment: comment},

function (data) {
if (!data) {
$("#submit").append("Failed to reach server. Login Error.");
} else {
alert(data);
        }
});
return false; 
});
});
</script> 
<div class='comments'>
<!--<form action="scripts/comment.php" method="POST"> -->
<form action="" method="POST">
<label>Name:  </label><br /><input id="name"type="text" name="name" /><br /><br />
<label>Title: </label><br /><input id="title"type="text" name="title" /><br /><br />
<label>Comment:  </label><br /><textarea id="comment" name="comment" cols="90" rows="7">       </textarea><br /><br /><br />
<input id="submit" type="submit" name="submit" value="Comment" /><br />

</form>
<hr width=auto size="5px" />
</div>

和用于插入的 php:

<?php
if (isset($_POST['name'])) {
// attempt a connection
$conn_string = "host= port= dbname= user= password=";
$dbh = pg_connect($conn_string);
if (!$dbh)  {
die("Error in connection: " . pg_last_error());
}

$name =pg_escape_string($_POST['name']);
$title= pg_escape_string($_POST['title']);
$comment =pg_escape_string($_POST['comment']);
$today=pg_escape_string(date('d-m-y'));
$sql = "INSERT INTO comments VALUES  ('$name','$comment','$today','$title',nextval('comments_id_seq'::regclass))";
$result = pg_query($dbh, $sql);
if (!$result) {

die("Error in SQL query: " . pg_last_error());
} 
pg_close($dbh);
//   $page='../index.php';
//header('Location:'.$page);
}
?>

任何帮助,将不胜感激 :) 。谢谢

4

1 回答 1

0

您的 $.post() 调用无视服务器的响应,这使得故障排除变得困难。您可以采取一些措施来纠正此问题:

首先,确保您已打开 PHP 错误报告。如果您的配置中没有打开它,请在脚本开头附近启用它,如下所示:

error_reporting(E_ALL);

接下来,找到一种查看 PHP 脚本输出的方法。您可以修改您的post调用以接收和处理响应,但更简单的方法是暂时将您的 HTML 表单直接发布到脚本,绕过 AJAX 调用。查看当您将表单直接发布到脚本时脚本产生的输出。

于 2013-04-17T14:38:54.317 回答