$_SESSION din Php la Ajax

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

$_SESSION din Php la Ajax

Salut,
La initializarea unui <select> din pagina am un set de date ca valori in <select> (array). La actionarea unui buton vreau sa schimb array-ul si fac asta cu ajax (fac alt query pentru <select>) iar query il salvez in $_SESSION apoi din ajax revin in formular. Desi inlocuiesc array-ul pentru <select> cu continutul din $_SESSION lista nu se schimba decit dupa refresh. Cred ca se comporta corect, dar ce ar trebui sa fac sa rezolv? Nu vreau sa fac refresh pagina, numai refresh <select>. Multumesc.

MarPlo
Salut
Ar fi de folos partea de cod cu ce ai incercat sa faci: php, javascript si html cu form-ul /<select>-ul.

andras
Am redus la limita.
In javascript se trimite cu ajax:

Cod: Selectaţi tot

<script>
function vizibilForm2(clasa) {
document.getElementById("frm2").style.display = 'block';
var echipa = document.getElementById("echipa").value;
var datacrt = document.getElementById("datacrt").value;
var data_json = {
"clasa" : clasa,
"echipa" : echipa,
"datacrt" : datacrt
};

function my_ajax2(phpfile, data_json, type) {
$.ajax({
async : false,
type : type,
url : phpfile,
data : data_json,
success : function(msg) {
}
});
}
my_ajax2("/cms/filtruuseri.php", data_json, "post");

return false;
}
</script>
Fisierul apelat cu ajax:

Cod: Selectaţi tot

<?php
if(!isset($_SESSION)) session_start();
$_SESSION['filtruuseri'] = [];
// la alegerea echipei se face filtru pe useri
$echipa = $_POST['echipa'];
$datacrt = $_POST['datacrt'];
include('common.php');
$clasa = $_SESSION['clasa'];
include (CALE.'include/varclase.php');
$vechipa = ${'obj'.$clasa}->vechipa;
$tipus = "SELECT `user_id`, `nume`, `echipaid` FROM `useri`
WHERE `echipaid` = ".$echipa."
 ORDER BY `nume` ";
$tip_r = $conn->sqlExec($tipus);
$_SESSION['filtruuseri'] = $tip_r;
?>

MarPlo
Nu stiu ce transmiti la ajax, ce "echo" ai in php. Nici in ajax la "success" nu faci ceva.

andras
Tocmai aici nu inteleg (e vina mea), daca in fisierul apelat cu ajax pun in SESSION o variabila pe care o folosesc (fara refresh) in alt fisier (tot ca SESSION) si in ambele fisiere am session_start(), mai este nevoie sa pun echo? Nu se lucreaza pe sesiune? Aici e ceva ce imi scapa.

MarPlo
Ajax nu primeste $_SESSION, ci doar text /sir transmis de php. Ceea ce e transmis la browser spre afisare aceea primeste ajax-ul. Nu array, obiect sau variabila; ci doar sir.

andras
Acum am inteles, multumesc! Asta imi va schimba modul de abordare. Eu m-am incapatinat sa cred ca fiind vorba de un fisier PHP accepta $_SESSION in orice conditii. Dar nu e asa.

MarPlo
Fisierul php accepta si recunoaste SESSION, dar ajax e doar un sistem javascript care primeste sirul /textul transmis la browser, cu un "echo", var_dump(), mesaj eroare; orice se poate afisa in browser. Nu are legatra cu ce accepta partea de pe server.

andras
Pentru mine este important ca am inteles acest mecanism. Mai de mult timp aveam aceasta dilema.
Am schimbat modul de abordare, am renuntat la $_SESSION iar o parte din formul 2 il construiesc direct in fisierul apelat cu ajax si la success: il afisez in pagina, acum functioneaza bine. E mai simplu dupa ce am inteles mecanismul.

Subiecte similare