Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Guilherme Melo

Problemas JQuery Ajax ao preencher formulário

Recommended Posts

Olá pessoal , sou iniciante em PHP e etc... Estou tentando preencher os meus inputs de acordo com o valor do select .... Mas está difícil ! Os erros podem ser grotescos ..Mas como sou iniciante nao consigo entender muito bem o script ... Qualquer ajuda é bem vinda !

 

 

 

 

 

 

PHP

 
<form name="form1" action="gravarementa.php" method="post" onsubmit="return validar();">            Selecione a Disciplina
 
                    <select id="sel-teste" name="sel">
                        <option value="">Disciplinas Atuais</option><?php
                        while ($lista = mysql_fetch_array($res)) {
                            if ($aux == $lista['periodo']) {
                                
                                $combo = '<option value="' . $lista['cod_disciplina'] . '">' . $lista['descricao'] . '</option>';
                            }
                            echo $combo;
                        }
                        ?>
 
                    </select>
                    
                    <br>
                    <br>
                    Ementa<br> 
                    <?php
                    include('funcaoAjax.php'); ?>
                   <label>Ementa: <input type="text" name="ementa" value="" /></label>
                   <label>Objetivo: <input type="text" name="objetivo" value="" /></label>
 

funcao

 
function retorna($id=null) {
    $id = (int) $id;
$json = NULL;
    $sql = "SELECT descricao,objetivo From `ementa_disciplina` ";
    if ($id != null){
        $sql .= "WHERE ano='2014' and cod_disciplina = {$id} ";
    $query = mysql_query($sql);
    }
    
    $json .= '[';
    if (mysql_num_rows($query) > 0) {
        while ($dados = mysql_fetch_assoc($query)) {
            $json .= "{ementa: '{$dados['descricao']}', objetivo: '{$dados['objetivo']}'}";
        }
    } else
        $json = 'ementa: não encontrada';
 
    $json .= ']';
   
 
    return $json;
}
 
        if (isset($_GET['cod_disciplina'])) {
            echo retorna($_GET['cod_disciplina']);
}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, e o js ?

 

veja:

<select id="sel-teste" name="sel">
e lá no php, vc tinha q esperar a mesma coisa, mas está diferente:

if (isset($_GET['cod_disciplina'])) {
   echo retorna($_GET['cod_disciplina']);
}
Esse script é do meu blog:

http://wbruno.com.br/ajax/combobox-preenche-input-ajax/

 

 

A melhor coisa que vc pode fazer, é deixar ele funcionando sem alterar, e depois que entender, ai sim mexer em algo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse script peguei num post aqui seu ... rsrs

Eu fiz o código exatamente como o seu e funcionou perfeitamente .. Mais estou tendo problemas para compreender a sintaxe ..


Ta ae o JS

 

 

 

 
<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("select[name='sel']").change(function(){
$("input[name='ementa']").val('Carregando...');
$("input[name='objetivo']").val('Carregando...');
 
$.getJSON(
'funcaoAjax.php',
{cod_disciplina: $(this).val()},
function(data){
$.each(data, function(i, obj){
$("input[name='ementa']").val(obj.ementa);
$("input[name='objetivo']").val(obj.objetivo);
});
});
});
});
</script>
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guilherme, beleza?

Vamos lá:

Js:

<script type="text/javascript" src="jquery-1.3.2.js"></script>
<script type="text/javascript">

1- $(document).ready(function(){
2-    $("select[name='sel']").change(function(){
3-       $("input[name='ementa']").val('Carregando...');
4-        $("input[name='objetivo']").val('Carregando...');
5-  
6-        $.getJSON('funcaoAjax.php', {cod_disciplina: $(this).val()}, function(data){
7-         $.each(data, function(i, obj){
8-          $("input[name='ementa']").val(obj.ementa);
9-           $("input[name='objetivo']").val(obj.objetivo);
10-         });
11-       });
12-   });
13- });
</script>

Linha 2:

O método change é disparado quando uma opção é selecionada no combox com o nome sel. Nesse caso o combobox de disciplinas.

 

Linha 3 e 4:

Seta o valor "Carregando...." nos inputs ementa e objetivo. Isso é usado para mostrar ao usuário que está acontecendo uma ação após ele escolher uma opção no combobox de disciplinas

 

Linha 6:

Chama o método $.getJSON para que processe os dados que contem na página funcaoAjax.php e tenha como retorno um formato JSON. Note que também é passado parar a página via get o código da disciplina, que na verdade é o valor do value selecionado no combobox de disciplinas

 

Linha 7:

O método $.each na verdade é um loop, ou seja ele vai pegar o resultado da consulta obtida na página funcaoAjax.php e setar os valores nos inputs ementa e objetivo. (Linha 8 e 9).

 

 

funcaoAjax.php

Basicamente pega o código enviado, faz um select no banco e retorna os dados no formato json.

 

Espero ter ajudado

 

ATT

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado pela ajuda , esclareceu bastante coisa ..

Mas continua o problema .. No console do Chrome aparece a seguinte mensagem :

 

Uncaught TypeError : Cannot read property 'ementa' of null (repeated 2 times) , não sei o que fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Guilherme,

Eu sinceramente faria diferente do seu exemplo.

No arquivo .php use o json_encode : http://www.php.net/manual/pt_BR/function.json-encode.php

O retorno com o javascript você pode alterar o método $.each por um for simples.

var json_parsed = $.parseJSON(data);
if (json_parsed.results.length > 0) {
      for (var i = 0; i < json_parsed.results.length; i++) {
           var jresult = json_parsed.results[i];
           $("input[name='ementa']").val(jresult.ementa);
          ....
      }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mudei a função para esta , mas continua o problema :/

 

 
function retorna( $id )
{
$id = (int)$id;
 
$sql = "SELECT `descricao`, `objetivo`, `ano`
FROM `ementa_disciplina` WHERE `ano`='2014' `cod_disciplina` = {$id} ";
$query = mysql_query( $sql );
 
 
$arr = Array();
if( mysql_num_rows( $query ) )
{
while( $dados = mysql_fetch_object( $query ) )
{
$arr['descricao'] = $dados->ementa;
$arr['objetivo'] = $dados->objetivo;
}
}
else{
$arr[] = 'ementa: não encontrada';
                }
return json_encode( $arr );
}
 
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.