0
Due to an internal need, I need to make the return of an Ajax query create lines for each displayed result. Today I have a function that I use and that works normally when the result is only one line, as below:
Now, if the return is more than one result, I get the error below, within the Jquery library itself:
So I send the JSON:
while (OCIFetch($consulta2)){
$array = array('codigo'=>$v_codigo, 'descricao'=>$v_descricao, 'status'=>$v_status, 'lote'=>$v_lote, 'endereco'=>$v_endereco, 'validade'=>$v_validade, 'qtde'=>$v_qtde);
echo json_encode($array);
}
The function that "receives" JSON is this:
// Atribui uma função para ser executada sempre que houver uma mudança de estado
xmlreq.onreadystatechange = function () {
// Verifica se foi concluído com sucesso e a conexão fechada (readyState=4)
if (xmlreq.readyState == 4) {
// Verifica se o arquivo foi encontrado com sucesso
if (xmlreq.status == 200) {
//Se o retorno foi vazio do Oracle
if (xmlreq.responseText == "") {
document.getElementById("codigo").focus();
ids.forEach(function (id) {
document.getElementById(id).value = '';
});
//Se encontrou dados
} else {
//Aqui recebe os dados do processa.php, abre e aplica nos campos desejados
var dados = JSON.parse(xmlreq.responseText);
// função para preencher os campos com os dados
ids.forEach(function (id) {
document.getElementById(id).value = dados[id];
});
}
} else {
result.innerHTML = "Erro: " + xmlreq.statusText;
}
}
requestActive = false;
};
xmlreq.send(null);
This is the same function I’m trying to change to create table rows automatically when I find more than one result. I followed that example, I put id in the html table, but I couldn’t change this ajax that I use. Any suggestions?
UPDATE
With the @Guerra response, JSON passed to Ajax, and with the code below created the lines it needed:
var HTML = "<table class='table table-striped table-bordered table-hover' style='width:500px'>";
HTML += "<tr><th>Status</th><th>Lote</th><th>Endereco</th><th>Validade</th><th>Qtde</th></tr>";
var data = JSON.parse(xmlreq.responseText);
document.getElementById("descricao").value = data[0].descricao; //POSIÇÃO 0 PARA SEMPRE PEGAR O PRIMEIRO NOME DO ARRAY
for(var i = 0;i<data.length;i++){
HTML += "<tr><td><input type = 'text' value=" + data[i].status + "></td>";
HTML += "<td><input type = 'text' value=" + data[i].lote + "></td>";
HTML += "<td><input type = 'text' value=" + data[i].endereco + "></td>";
HTML += "<td><input type = 'text' value=" + data[i].validade + "></td>";
HTML += "<td><input type = 'text' value=" + data[i].qtde + "></td></tr>";
}
HTML += "<tr><td colspan='7'><center><input type = 'button' value = 'Limpar' class='btn'";
HTML += "onclick='location.href='ConfirmaTransferencia.php''>              ";
HTML += "<input type = 'submit' value = 'Gravar' class='btn'></center></td></tr>";
HTML += "</table>";
document.getElementById('locais').innerHTML = HTML;
Show, this part worked. Now I’m having trouble in the second part, in Ajax same. How do I treat it in the receipt? There he says that the "data[i]" does not exist....
– Diego
see the update of my question.... thanks!
– Diego