通过php返回多个json

时间:2016-04-19 17:48:18

标签: php json

我需要从我的数据库中检索一个可以具有相同名称的用户列表。我遇到了麻烦,我将查询结果转换为json。

如果我只检索一个结果,代码就可以了,但是自从我开始使用LIKE后,它就开始失败了。

php代码:

<?php


$q = $_POST['q'];

require('connect.php');

$i = 0;

$sql="SELECT `_nome`, `_endereco`, `_telefone`, `_imgstring`, `_dtAcesso`, `_descricao`, `_fkIdUser` FROM `tbvisitantes` WHERE _nome LIKE CONCAT ('%',?,'%')";
$stmt= $conn->prepare($sql);
$stmt->bind_param('s', $q);


if ($stmt){
$stmt->execute();

$stmt->bind_result($rName, $rEndereco, $rTelefone, $rImgString, $rDtAcesso, $rDescricao, $rFkIdUser);

while ($row = $stmt->fetch_array()){

$json_output = array('name' => $rName, 'address' => $rEndereco, 'tel' => $rTelefone, 'imgString' => $rImgString, 'dtAcesso' => $rDtAcesso, 'descricao' => $rDescricao, 'fkIdUser' => $rFkIdUser);

echo json_encode($json_output);

}

$stmt->close();

}
mysqli_close($conn);

?>

收到结果的脚本:

$.ajax({
url: 'getuser.php',
type: 'POST',
data: {q: str},
success: function(jsonString){

$vIndex = '<input class="vInput"></input>';

$($cadContent).appendTo('#cadContent');

var json = $.parseJSON(jsonString);

var jsonLenght = Object.keys(jsonString).length;


$.each(json, function(index, el) {

$($vIndex).attr('id', index).val(el).appendTo('#txtHint');


});


}
})
.done(function() {
console.log("success");
})
.fail(function(xhr) {

alert("An error ocurred:" + xhr.status + xhr.statusText);

console.log('failed');
})
.always(function() {
console.log("complete");
});


}

我认为我的问题可以通过构建我的JSON,但我现在不知道如何修复它。

2 个答案:

答案 0 :(得分:0)

您需要将行合并为一个JSON数组:

if ($stmt){
  $stmt->execute();

  $stmt->bind_result($rName, $rEndereco, $rTelefone, $rImgString, $rDtAcesso, $rDescricao, $rFkIdUser);
  $rows = array();

  while ($row = $stmt->fetch_array()){

    $json_output = array('name' => $rName, 'address' => $rEndereco, 'tel' => $rTelefone, 'imgString' => $rImgString, 'dtAcesso' => $rDtAcesso, 'descricao' => $rDescricao, 'fkIdUser' => $rFkIdUser);
    $rows[] = $json_output;
  }
  echo json_encode($rows);
}

答案 1 :(得分:0)

您无法在json中回显多重响应。您必须将响应组合到一个数组中,然后您必须回应响应。

以下代码段对您有帮助,

服务器页面:

while ($row = $stmt->fetch_array()){

   $json_output[] = array('name' => $rName, 'address' => $rEndereco, 'tel' => $rTelefone, 'imgString' => $rImgString, 'dtAcesso' => $rDtAcesso, 'descricao' => $rDescricao, 'fkIdUser' => $rFkIdUser);

}
echo json_encode($json_output);

在Ajax页面中:

// your success callback handler
function handler( response ) {
  // execute code for object 1
  doStuff(response[0] );
  // execute code for object 2
  doOtherStuff( response[1] );
}