Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用AJAX将数据从PHP返回到JQuery时出现问题_Php_Jquery_Ajax_Json - Fatal编程技术网

使用AJAX将数据从PHP返回到JQuery时出现问题

使用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"

我正在尝试用Jquery、AJAX和PHP做一个评论系统。 我能够将注释存储在数据库中,但是当我想从数据库中显示它们时,我遇到了问题。我相信我在读取以JSON格式从.php文件发送的数据时出错了

这是我正在使用的代码

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>
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'];
},