我一直在关注网站上的很多教程和问题。 我正在尝试使用'echo json_encode()'从ajax调用返回到php函数的数组
我认为我的问题在于js代码
THE JS ......
var pid = 23;
$.ajax({
type:"POST",
url:"../classes/ajax.php",
data: {dv:pid},
dataType:'json',
success: function(data) {
alert(data);
$('div.dv-panel').css('background-image', 'url(../classes/' + data.url + ')');
$('div.dv-panel').attr('href', '/classes/' + data.url);
$('<ol class="breadcrumb">
<li><a href="#">'+ data.sbj + '</a></li>
<li><a href="#">'+ data.cls +'</a></li>
<li><a href="#">'+ data.typ +'</a></li>
<li class="active">'+ data.ttl +'</li></ol>').appendTo('div.dv-breadcrumb');
$(data.ttl).appendTo('h2.dv-title');
$(data.user).appendTo('div.dv-user');
}
});
PHP ...
if($_POST && isset($_POST['dv'])) {
$op = new Ajax;
$response = $op->doc_view_where_id($_POST['dv']);
}
function doc_view_where_id($pid) {
$sql = "SELECT * FROM upload WHERE id = ?";
if($try = $this->con->prepare($sql)) {
$try->bind_param('s',$pid);
$try->execute();
$try->bind_result($row);
if($try->fetch()) {
$path = $row['path'];
$path = str_replace('\\','/',$path);
$path = str_replace(' ','%20',$path);
$view = array();
$view["url"] = $path;
$view["sbj"] = $row['subject'];
$view["cls"] = $row['class'];
$view["typ"] = $row['type'];
$view["ttl"] = $row['title'];
$view["user"]= $row['username'];;
echo json_encode($view);
}
}
}
我使用相同的PHP代码用ajax获取单个值就好了,我认为使用json会以同样的方式但是,它不会返回任何php错误或任何东西。
答案 0 :(得分:0)
我认为您需要进行一些调试以缩小问题发生的位置。我将首先检查Firebug中的Ajax请求。打开firebug,单击NET然后单击XHR。现在在浏览器中运行请求。它会触发任何HTTP错误代码吗?什么参考寄给了?回答是什么?您还可以使用error_log()函数在PHP端进行调试。例如,注释掉echo json_encode($ view);并试着这样做:
$response = json_encode($view);
error_log(print_r($response, true));
这会将JSON对象的内容作为字符串记录到PHP错误日志中,而不会中断程序的正常流程。
当你使它工作时,我会使用return而不是echo。