submit cu ajax onchange select

Discutii si intrebari legate de scripturi si functii JavaScript, jQuery si Ajax, cod JavaScript in general.
sterica
Mesaje: 260

submit cu ajax onchange select

Salutare,

Am un form care trimite valori dintr-un select intr-un query, insa vreau ca aceste valori sa fie trimise la schimbarea valorilor din select fara a mai fi nevoie de submit, insa ma impotmolesc la JS, nu stiu cum sa fac trimitea rezultatului in tabel.

Cod: Selectaţi tot

<?php
	$an_selectie = null;
    	if(isset($_POST['an_selectie])) {
        	$an_solicitari = $_POST['an_selectie'];
        }
        	
        function an_selectie ($var){        
       		$sql = "Select*From tbl...WHERE .... $an_selectie"
       		...
        	echo "<td>.$row['ID']</td>";
    	}
?>

<form action="" method="post">
	<select id="an_selectie" onchange="fetch_select();">
		<option value="2016">2016</option>
		<option value="2017">2017</option>
	</select>
</form>

<div>
<table>
	<tr><?php an_selectie($var); ?></tr>
</table>
</div>

<script>
function fetch_select(){
        var an_selectie = $('#an_selectie').val();

        $.ajax({
            type: 'POST',
            url: 'index.php',
            data: { an_selectie: an_selectie},
        });
}
</script>
Multumesc!

MarPlo
Salut
Care e problema, ce nu functioneaza?
Preia valoarea din select, trimite datele la php?

sterica
functia js preia valoarea din select insa nu reusesc sa o duc in functia an_selectie din php si sa afisez rezultatul functie in tabel

MarPlo
Afisarea se face din JavaScript. In Ajax preiei raspunsul de la server si-l adugi in html.

Cod: Selectaţi tot

<div id='resp'>Aici ajax adauga raspunsul de la server</div>
<script>
function fetch_select(){
  var an_selectie = $('#an_selectie').val();
  $.ajax({
    type: 'POST',
    url: 'index.php',
    data: { an_selectie: an_selectie},
    success: function(raspuns){
      $('#resp').html(raspuns);
    }
  });
}
</script>
In php returnezi direct raspunsul, fara altceva.

Cod: Selectaţi tot

function an_selectie($var){       
  $sql = "Select*From tbl...WHERE .... $an_selectie"
  //...
  return '<td>'.$row['ID'].'</td>';
}

if(isset($_POST['an_selectie'])){
  $an_solicitari = $_POST['an_selectie'];
  echo an_selectie($an_solicitari);
  exit;
}

sterica
mi-a reusit, multumesc mult de ajutor

sterica
desi functioneaza corect logica codului prezentata mai sus, am o nelamurire.
Codul meu ara asa:

Cod: Selectaţi tot

<?php
	function an_selectie($var){       
  		$sql = "Select*From tbl...WHERE .... $an_selectie"
  		//...
  		return '<td>'.$row['ID'].'</td>';
	} 
	
	if(isset($_POST['an_selectie'])){
  		$an_solicitari = $_POST['an_selectie'];
  		echo an_selectie($an_solicitari);
  		exit;
	}
?>
<?php
    include_once "includes/head.inc.php";
?>
<div id='resp'>Aici ajax adauga raspunsul de la server</div>
<script>
function fetch_select(){
  var an_selectie = $('#an_selectie').val();
  $.ajax({
    type: 'POST',
    url: 'index.php',
    data: { an_selectie: an_selectie},
    success: function(raspuns){
      $('#resp').html(raspuns);
    }
  });
}
</script>
<?php
    include_once "includes/footer.inc.php";
?>
Raspunsul primit din if il afiseaza in interiorul div-ului cu id resp.
De ce aceasta linie de cod: echo an_selectie($an_solicitari); nu este afisata la inceputul paginii (inaintea head-ului) si codul de ce nu se opreste la exit-ul din if?

Multumesc!

MarPlo
Codul:

Cod: Selectaţi tot

if(isset($_POST['an_selectie'])){
  $an_solicitari = $_POST['an_selectie'];
  echo an_selectie($an_solicitari);
  exit;
}
- se executa DOAR cand sunt trimise date prin POST cu parametru 'an_selectie' (asta e rolul acelui if() ); in cazul tau cand e acel apel de la Ajax. Doar atunci e transmis acel "echo" si primit "pe ascunns" in javascript, iar exit; ca sa nu mai trimita si altceva ca raspuns la ajax.

Subiecte similare