Json编码消息

时间:2015-01-23 08:33:22

标签: php jquery json

我尝试做的是,如果选择的行数大于或等于1,则回显此json_encode(array("item" => $item));,否则,如果选择的行数等于零,则回显{{1 }}。但这不起作用。输出的结果是,即使选择的记录大于1,也没有后期值返回。有什么帮助吗?

echo json_encode(array("failed" => 'failed'));

的Ajax

<?php
if(isset($_POST['id'])) {
$id= $_POST['id'];

$sql = $mysqli->query("SELECT item FROM table WHERE id='$id'");
while($row = $sql->fetch_assoc())
  {
  $item= $row['item'];
  }
  if(($sql->num_rows)>= 1){
    echo json_encode(array("item" => $item));
  } else {
    echo json_encode(array("failed" => 'failed'));  
  }
}
?>

2 个答案:

答案 0 :(得分:0)

在.php文件中,您正在检查是否设置了$_POST['id']但是您要发布pr_code

检查if(isset($_POST['pr_code']))是否应该这样做。

你需要改变:

if(($sql->num_rows)>= 1)

if(($row->num_rows)>= 1){

答案 1 :(得分:0)

假设:id=...表示有一个或0个记录,而不是更多 只是尝试获取这一条记录。如果fetch_assoc()“告诉”你没有这样的记录(通过返回FALSy),发送错误信息。
还要确保您的脚本始终以一致的方式返回某些内容 编辑:查询本身也可能失败;你必须检查(并可能报告)。

<?php
if(!isset($_POST['id'])) {
    $result = array('failed'=>'missing parameter: id');
}
else {
    // remember little Bobby Tables, http://xkcd.com/327/
    $id= $mysqli->real_escape_string($_POST['id']);
    $sql = $mysqli->query("SELECT item FROM table WHERE id='$id'");
    if ( !$sql ) {
        $result = array('failed' => 'query failed');
    }
    else {
        $result = $sql->fetch_assoc();
        if ( !$result ) {
            $result = array("failed" => 'no such item');
        }
    }
}

echo json_encode($result);