$_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 Mesaje: 4343
Salut
Ar fi de folos partea de cod cu ce ai incercat sa faci: php, javascript si html cu form-ul /<select>-ul.

andras Mesaje: 430
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 Mesaje: 4343
Nu stiu ce transmiti la ajax, ce "echo" ai in php. Nici in ajax la "success" nu faci ceva.

andras Mesaje: 430
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 Mesaje: 4343
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 Mesaje: 430
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 Mesaje: 4343
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 Mesaje: 430
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