我试图从表格中获取所有列名称:
$query = "SHOW columns FROM table;";
$json = array();
if ($result = $link->query($query)) {
while($row = $result->fetch_assoc()){
array_push($json, $row['Field']);
}
}
header( 'Content-Type: application/json' );
//print_r($json);
echo json_encode($json);
exit;
jQuery代码:
$.ajax({
type: "POST",
dataType: "json",
data : {
q : "abc"
},
success : function(data) {
if(data.length!=0){
console.log(JSON.stringify(data));
$("#content").append(data);
}
else{
$("#content").text("no data");
}
},
error : function(data) {
console.error("error: " + data));
}
});
当我使用print_r($json)
时,我得到了这个回复,这是正确的:
"Array\n(\n [0] => ID\n [1] => Name\n [2] => Age\n [3] => Gender\n )\n"
但是当我使用json_encode($json)
时,我得到no data
,因此回复为空。
更新
好的,我取消注释了dataType: "json"
,添加了header( 'Content-Type: application/json' );
并按照建议编辑了error callback
。
这是我收到的错误消息:
parsererror SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Stack-Trace:
m.parseJSON@http://code.jquery.com/jquery-latest.min.js:4:15732
Pc@http://code.jquery.com/jquery-latest.min.js:4:18120
x@http://code.jquery.com/jquery-latest.min.js:4:21525
.send/b@http://code.jquery.com/jquery-latest.min.js:4:25897
答案 0 :(得分:0)
在回显结果之前,您应该设置正确的标题类型:
header( 'Content-Type: application/json' );
echo json_encode( $json);
另外,尝试将AJAX请求类型设置为GET
而不是POST
:
$.ajax({
type:'GET',
data: 'q=abc',
success : function(data) {
if(data.length!=0){
console.log(JSON.stringify(data));
$("#content").append(data);
}else{
$("#content").text("no data");
}
},
error : function(data) {
console.error("error: " + data));
}
});
<强>更新强>
如果您使用的是谷歌浏览器(强烈推荐),请使用检查器(Ctrl + Shift + I)网络标签, XHR 子部分,您将在其中看到AJAX请求的尝试。
在名称列下,点击请求,在右侧,您可以使用标题和响应部分来检查AJAX请求正常。