使用AJAX将数据从PHP返回到JQuery时出现问题
我正在尝试用Jquery、AJAX和PHP做一个评论系统。 我能够将注释存储在数据库中,但是当我想从数据库中显示它们时,我遇到了问题。我相信我在读取以JSON格式从.php文件发送的数据时出错了 这是我正在使用的代码 index.html使用AJAX将数据从PHP返回到JQuery时出现问题,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我正在尝试用Jquery、AJAX和PHP做一个评论系统。 我能够将注释存储在数据库中,但是当我想从数据库中显示它们时,我遇到了问题。我相信我在读取以JSON格式从.php文件发送的数据时出错了 这是我正在使用的代码 index.html <form id="form" method="post"> Name: <input type="text" name="name" id="name"> Comment: <textarea rows="5"
<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>
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)
?>
尝试更改
$data[$i]["name"]=$row[name];
$data[$i]["texr"]=$row[text];
为了
如其他解决方案中所述,将post数据作为对象传递比以正确格式的字符串传递更好:
数据类型:要发送到服务器的纯对象或字符串数据。它是
已转换为查询字符串(如果尚未转换为字符串)。它附在
GET请求的url。请参阅processData选项以防止出现这种情况
自动处理。对象必须是键/值对。如果值是
数组,jQuery根据
传统设置的值(如下所述)
此外,使用或
另外,设置
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
如有必要,也可以在$.ajax参数上使用适当的字符集
不要忘记验证和清理数据(这可能是一个很好的起点)
jQuery将执行智能猜测,因此不必设置数据类型或json解码前面提到的成功响应,但为了清晰起见,您可以通过任何方式进行。来自:
数据类型(默认值:智能猜测(xml、json、脚本或html))
使用对象传递$.ajax中的数据
var dataString = {'name':name,'text':text};
还可以使用mysqli,因为mysql被折旧。您应该尝试将event.js文件上的json编码数据处理为-
success: function(data){
var test = jQuery.parseJSON(data);
var test1=test.data[0]['name'];
},
那么,你得到了什么,什么不起作用,你期望得到什么?危险:你正在使用,并且应该使用。你也容易受到现代API的攻击,因为它会使你更容易从中获得信息。我在index.html文件中没有得到任何更新,而是出现“失败”警报。我甚至无法显示“succes”警报如果弹出失败警报,ajax调用显然会失败。打开控制台并记录error函数的参数,查看问题所在。使用PDO或mysqli,警报就会消失。不管怎样,它应该会工作的,谢谢。这是我第一次使用AJAX和PHP,因此研究PDO将为您节省大量构建查询的时间。这不是那么简单,但绝对值得更陡峭的学习曲线:-)
var dataString = {'name':name,'text':text};
success: function(data){
var test = jQuery.parseJSON(data);
var test1=test.data[0]['name'];
},