Ajax json发布到php的多个返回值

时间:2013-11-17 00:22:52

标签: jquery json post return-value encode

我一直在关注网站上的很多教程和问题。 我正在尝试使用'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错误或任何东西。

1 个答案:

答案 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。