我正在尝试使用Jquery,AJAX和PHP进行评论系统。 我能够将注释存储在数据库中,但是当我想从数据库中显示它们时,我遇到了问题。我相信在读取从.php文件以JSON格式发送的数据时,我做错了。
这是我正在使用的代码。
的index.html
<form id="form" method="post">
Name: <input type="text" name="name" id="name">
Comment: <textarea rows="5" cols="115" id="text"></textarea>
<input type="submit" id="submit" value="submit">
</form>
events.js
$('#form').on("click",'#submit',function(){
var name = $("#name").val();
var text = $("#text").val();
var dataString = 'name='+ name + '&text=' + text;
$.ajax({
url:'comments.php',
type:'POST',
cache: false,
data: dataString,
success: function(data){
alert("success");
$(".comment-block").append(data);
},
error:function(){
alert("failure");
}
});
的comments.php
<?php
$name=$_POST['name'];
$text=$_POST['text'];
$conexion=mysql_connect("localhost","user","pass");
mysql_select_db("db_1",$conexion);
mysql_query("insert into comments (name,text) values ('$name','$text')");
$sql=mysql_query("SELECT * FROM comments");
$data=array();
$i=0;
while ($row=mysql_fetch_array($sql))
{
$data[$i]["name"]=$row[name];
$data[$i]["texr"]=$row[text];
$i++;
}
echo json_encode($data)
?>
答案 0 :(得分:1)
尝试更改
$data[$i]["name"]=$row[name];
$data[$i]["texr"]=$row[text];
的
$data[$i]["name"]=$row['name'];
$data[$i]["text"]=$row['text'];
并且如其他解决方案和jQuery API所述,将帖子数据作为对象传递得比正确格式化的字符串更好:
data类型:PlainObject或String要发送到服务器的数据。它是 转换为查询字符串,如果还不是字符串。它被附加到 GET请求的URL。请参阅processData选项以防止这种情况 自动处理。对象必须是键/值对。如果价值是 Array,jQuery使用相同的密钥序列化多个值 传统环境的价值(如下所述)。
另外,设置
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
如果需要,或$ .ajax参数上的正确字符集(并urldecode适当)。
并且不要忘记验证和清理您的数据(filter input可能是一个很好的起点)。
jQuery将执行智能猜测,因此没有必要设置dataType或json解码响应成功,如上所述,但为了清楚起见,您仍然可以这样做。再次从jQuery API开始:
dataType(默认值:Intelligent Guess(xml,json,script或html))
答案 1 :(得分:1)
使用object传递$ .ajax中的数据。
var dataString = {'name':name,'text':text};
同样使用mysqli_ *,因为mysql_ *已折旧。
答案 2 :(得分:0)
你应该尝试将event.js文件中的json编码数据处理为 -
success: function(data){
var test = jQuery.parseJSON(data);
var test1=test.data[0]['name'];
},