AJAX usando a foreach para colocar dados em forms
Estou há alguns dias tentando implementar consultas com ajax. Tenho tido exito, nas que buscam e o resultado é impresso numa div. Mais, agora estou precisando clicar, em uma das linhas resultado da primeira consulta, e mostar os dos nos objetos do form, para que possa ser feito alterações. Já li e reli diversos tutoriais, mais me deparei com um erro que não sei como eliminar:
Veja:
no form tenho
<input type="text" id="usuarioid" name="usuarioid" onChange="buscaInstantanea(this.value, 'usuario_idusuario.php', 'dados_usuario',0 );"> e abixo dele todos os outros campos da tabela.
======================================================
a função buscaInstantanea está assim:(arquivo JS)
function openAjax() {var ajax;try{ ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers decentes, como: Firefox, Safari, dentre outros.}catch(ee){ try{ ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o IE da MS }catch(e){ try{ ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS }catch(E){ ajax = false; } }}return ajax;}===================================================
// Função que realiza a busca instantânea
function buscaInstantanea(oqbusca, pagina, ondeMostra, numcarcbusca) { if(document.getElementById) { // Para os browsers complacentes com o DOM W3C. //var termo = document.getElementById('q').value; // Pega o termo digitado no campo de texto. var numCarcBusca = numcarcbusca; var ondeMostrar = ondeMostra; var qpagina = pagina; var termo = oqbusca; var exibeResultado = document.getElementById(ondeMostrar); // div que exibirá o resultado da busca. if(termo !== "" && termo !== null && termo.length >= numCarcBusca) {//COLOCAR 3 QUANDO FOR REAL // Verifica se o campo não está vazio, ou se foi digitado no mínimo três caracteres. var ajax = openAjax(); // Inicia o Ajax. ajax.open("GET", qpagina+"?q=" + termo, true); // Envia o termo da busca como uma querystring, nos possibilitando o filtro na busca. ajax.onreadystatechange = function() { if(ajax.readyState == 1) { // Quando estiver carregando, exibe: carregando... exibeResultado.innerHTML = "<h2>carregando...</h2>"; } if(ajax.readyState == 4) { // Quando estiver tudo pronto. alert(ajax.readyState ); if(ajax.status == 200) { alert(ajax.status); var resultado = ajax.responseText; // Coloca o resultado (da busca) retornado pelo Ajax nessa variável (var resultado). if ( numCarcBusca = 0 ) { var arr = window.eval(resultado); for (var p = 0; p < arr.lenght; p++) { //arr[p][0] nome do campo //arr[p][1] conteudo do campo document.getElementById(arr[p][0]).value = arr[p][1]; } } else { resultado = resultado.replace(/\+/g," "); // Resolve o problema dos acentos resultado = unescape(resultado); // Resolve o problema dos acentos exibeResultado.innerHTML = resultado; } } else { exibeResultado.innerHTML = "Erro: "; } } } ajax.send(null); // submete } }} =================================================
O aqruivo usuario_usuarioid que ela chama é assim:
<?include "./classes/c_tb_usuario_cns.php";function retornoJS($arr){//função que recebe um array e retorna uma string formatada // para a função window.eval do javascript consiga entender e montar a matriz //formato da matriz: [["campo","valor"], ["campo2","valor2"]] $txt='['; foreach ($arr as $fieldname => $fieldvalue) { $txt .= '["'.$fieldname.'","'.$fieldvalue.'"],'; } $txt = substr($txt,0,strlen($txt)-1); //só pra retirar a últma virgula $txt .= ']'; return $txt;}$colname_rsBusca = "32244";if (isset($_GET['usuarioid'])) { $colname_rsBusca = (get_magic_quotes_gpc()) ? $_GET['32034'] : addslashes($_GET['usuarioid']); } $clausula = sprintf("WHERE usuarioid =".$colname_rsBusca);$busca_usuario = new c_tb_usuario_cns;$usuarios_localizados = $busca_usuario->select_usuario($clausula); $totalRows_rsBusca = count($usuarios_localizados);for ($x=0;$x < $totalRows_rsBusca;$x++){ foreach ( $usuarios_localizados as $fieldname => $fieldvalue){ $arr[$fieldname] = $fieldvalue; }}echo retornoJS($arr); ?>=================================================
Bom a mesma função já funiona quando o numCarcBusca é diferente de zero, e não chama este arquivo php.
Acho que oproblema está na forma que tem que ser passado o array para o javascript
[["campo","valor"], ["campo2","valor2"]]
pois não sei se arq php
...
for ($x=0;$x < $totalRows_rsBusca;$x++){ foreach ( $usuarios_localizados as $fieldname => $fieldvalue){ $arr[$fieldname] = $fieldvalue; }}o retorno deste é
select * from usuario WHERE usuarioid =32244
[["0","Object id #4"]]
NOSSA ESPERO QUE POSSAm ME ENTENDER....
DESDE JÁ AGRADEÇO....
Discussão (1)
Carregando comentários...