Ik ben wat aan het spelen met AJAX maar snap er helaas nog weinig van.
Ik wil de laatste history url die de browser opslaat ophalen via AJAX en deze dan plaatsen in een string.
maar wat ik me nu al afvraag is hoe kan ik zien wat er in window.history zit bijvoorbeeld.
Maar laat me dat ander ding beantwoorden.
Hier is een voorbeeld van Ajax, met post data.
Dit kan je zelf al eens uittesten en wat mee spelen.
index.php
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function() { // wordt uitgevoerd als de pagina geladen is
// var browser_history = window.history.previous.href;
var username = 'Ray';
var surname = 'Davies';
// ajax verzoek starten. Alles in object-notatie
$.ajax({
url: 'ajax.php',
method: 'post',
data: {
voornaam: username,
naam: surname
},
success: function(message) { // dit wordt uitgevoerd als de server een antwoord terug stuurt naar javascript. de parameter message is wat de server geprint heeft.
// we steken het antwoord van de server in de div
$('#messages').html(message);
}
});
});
</script>
<div id="messages"></div>
ajax.php (steek die in de zelfde map als index.php)
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// de echo die we hier doen, is de boodschap die javascript terug krijgt
echo 'Hallo ' . $_POST['voornaam'] .' ' . $_POST['naam'] .', dit is een bericht dat we vanuit de server terug naar javascript tonen: ';
}
?>
Eigelijk doet deze niet precies wat ik wil.
Ik wil eigenlijk alleen de url hebben van de vorige pagina nu spring hij erheen.
Ik heb nu dit:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
$(document).ready(function() { // wordt uitgevoerd als de pagina geladen is
var browser_history = window.history.go(-1);
// ajax verzoek starten. Alles in object-notatie
$.ajax({
url: '../test/ajax.php',
method: 'post',
data: {
server: browser_history
},
success: function(message) { // dit wordt uitgevoerd als de server een antwoord terug stuurt naar javascript. de parameter message is wat de server geprint heeft.
// we steken het antwoord van de server in de div
$('#messages').html(message);
}
});
});
</script>
<div id="messages"></div>
Het success-event lijkt me dan verder niet echt nodig. Je kan het wel vervangen door een ajaxError event, als je het nodig vindt om fouten op te vangen.
in plaats van message kan je dan jqXHR,textStatus,errorThrown gebruiken om de gemaakte fouten op te vragen.
Het is niet helemaal het zelfde.
referrer is bedoeld om te weten of de gebruiker op een andere site een link heeft gevonden naar jouw site (en heeft geklikt).
Dat van de reffer is het zelfd als hoe ik het met PHP kan doen.
Ik ben eigenlijk op zoek naar de URL die de terug knop van de browser zelf gebruikt.
Dit halen ze uit de geschiedenis alleen hoe kom ik nu aan die url vraag ik me af.
Heb met php al van alles getest maar krijg niet wat ik wil.
Het lijkt vrij logisch dat het zou moeten kunnen, echter zitten daar privacy-bezwaren aan.
Vroeger had het misschien nog gekund met: window.history.href.
Maar nu lees ik dit in de docs van Mozilla over het history-object().
For security reasons the History object doesn't allow the non-privileged code to access the URLs of other pages in the session history, but it does allow it to navigate the session history.
Doorsturen kan nog wel, maar er is geen toegang meer mogelijk tot de URL's in de browsersessie.
Enige middel is nog $_SERVER['HTTP_REFERER'] die overigens niet 100% betrouwbaar is.