为了账号安全,请及时绑定邮箱和手机立即绑定

php返回数组给ajax出错

php返回数组给ajax出错

PHP
扬帆大鱼 2019-03-16 19:18:19
我通过php生成了一个数组,并echo回去,ajax进入error(ajax的datatype设为json),我推断原因在于返回的不是json格式。 求大神帮看看,感谢! ajax部分: $("#ricotext").keyup(function(){ $.ajax({ type:"post", url:"search.php", dataType:"json", data:{search:$("#ricotext").val()}, success:function(feedbackdata) { console.log(feedbackdata); console.log(success); }, error:function(feedbackdata) { console.log(feedbackdata); console.log(error); }, }); }); php部分: <?php $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "guitartabs"; $search=$_POST["search"]; $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } $sql = "SELECT * FROM tabs where name like '%$search%' OR singer like '%$search%'"; $result = $conn->query($sql); $num_results = $result->num_rows; if ($result->num_rows > 0) { //生成空数组 $backresults=array(); for($i=0;$i<$num_results;$i++){ $row = $result->fetch_assoc(); //遍历选项并将信息写入数组中 array_push($backresults,array("name"=>$row['name'],"singer"=>$row['singer'],"address"=>$row['address'])); }; //返回给ajax该数组 echo(json_encode($backresults)); } else { echo "抱歉,本站暂时未收录该乐谱。"; } $conn->close(); ?> chrome浏览器收到的数据是: [{"name":"NightWish","singer":"NightWish","address":"uploads\/NightWish.gp5"},{"name":"night","singer":"rico","address":"uploads\/MultiTrack.gp5"},{"name":"nightbar","singer":"ricoq","address":"uploads\/Serenade.gp5"}] 同时console.log打印 readyState: 4 error 说明进入了error。我觉得如果echo的是一个json对象应该就能解决问题。请教一下如何解决?
查看完整描述

4 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

echo之前加一下header

header('Content-type: application/json');
echo(json_encode($backresults));
...
查看完整回答
反对 回复 2019-03-18
?
三国纷争

TA贡献1804条经验 获得超7个赞

echo (json_encode($backresults));eixt();或者return json_encode($backresults),我自己一般都是return $backresults,然后console.log()就是个对象,也方便处理

查看完整回答
反对 回复 2019-03-18
?
动漫人物

TA贡献1815条经验 获得超10个赞

我猜你这个可能是队列的问题
因为再ajax中,可能你的请求还未得到服务器的相应,就执行了下面的语句
你可以试试设置 async:flase -> 等待服务器端返回数据再执行

查看完整回答
反对 回复 2019-03-18
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

我一般都会写成:

json_encode($backresults, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK);

这样的形式,处理一下编码的JSON。其它的暂时没看出来有什么问题。


具体含义参考JSON预定义常量

查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 484 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信