我通过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));
...
三国纷争
TA贡献1804条经验 获得超7个赞
echo (json_encode($backresults));eixt();或者return json_encode($backresults),我自己一般都是return $backresults,然后console.log()就是个对象,也方便处理
动漫人物
TA贡献1815条经验 获得超10个赞
我猜你这个可能是队列的问题
因为再ajax中,可能你的请求还未得到服务器的相应,就执行了下面的语句
你可以试试设置 async:flase -> 等待服务器端返回数据再执行
- 4 回答
- 0 关注
- 484 浏览
添加回答
举报
0/150
提交
取消