2016-04-19 3 views
-1

Мне нужно получить из моего db список пользователей, которые могут иметь одинаковое имя. У меня возникли проблемы с преобразованием результата моего запроса в json.возвращение нескольких json через php

Если бы я собирался получить только один результат, код будет работать, но с тех пор, как я начал использовать 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, но я сейчас не как почини это.

ответ

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]); 
} 
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); 
}