Autor Zpráva
Tomášeek
Profil
Ahoj,

trochu válčím se SESSIONs nastavenými AJAXem. Konzole při výpisu hlásí správnou hodnotu, ale SESSION se nenastaví/nezmění. Vše je v rámci jedné domény.

Kód:
TPL:
<a href="#" onclick="change_view('first'); return false;">...</a>

JS:
function ajax(url, callback) {
    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            callback(xmlhttp.responseText); // zkousel jsem si do konzole dumpnout xmlhttp, response=true, responseText=true, responseType='', atd. Jinak v te promenne nic divneho nevidim
        }
    }
    xmlhttp.open('GET', 'https://www.example.com/ajax.php' + url, true);
    xmlhttp.send();
}

function change_view(type) {
    ajax('?type=' + type, function(response) {
        console.log(response);
    });
}

PHP: (ať už samostatný soubor AJAX.php, nebo při vložení kódu přímo do index.php, který klasicky řídí celý web). Session_start() v kodu samozrejme je, v ridicim index.php (pokud jsem kod vlozil do nej).
if (isset($_GET['type'])) {
    if ($_GET['type'] === 'first') {
        $_SESSION['type'] = TRUE;
    } else {
        $_SESSION['type'] = FALSE;
    }

    echo json_encode($_SESSION['type']); // vrací TRUE
    exit;
}


Díky za nakopnutí, kde dělám chybu.
Tomášeek
Profil
Tak už to mám. Vyřešeno.

Problém byl v JS na řádku 9, kde mi to funguje pouze s relativní cestou k souboru ajax.php, tedy

xmlhttp.open('GET', 'ajax.php' + url, true);

Nevím, jestli je na vině HTTPS protokol, nebo co, ale dříve mi to tak na nezabezpečených stránkách fungovalo. S HTTPS nikoliv.
Keeehi
Profil
Tomášeek:
V relativní a absolutní adrese by rozdíl být neměl. Spíš bych to viděl prostě na nějaký překlep nebo zapomenutý adresář v té absolutní.
Tomášeek
Profil
Keeehi:
Ne, zkoušel jsem to pak vrátit zpět a bylo to tím (bez nějaké) chyby v konzoli, atp.

Na jiném webu to běží s absolutní adresou, jen na HTTP protokolu. Struktura, atd. je vše stejné. Ale nikomu tu mu zkušenost nenutím, debugovat umím, jen jsem nevěděl, čeho se chytit. Pokud myslíš, že jsem tam měl překlep, neberu ti to, mysli si to dál :-)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0