php aan roepen zonder redirect
Hoe kan ik met onderstaande code voorkomen dat de pagina ook wordt geredirect? Dit moet toch mogelijk zijn met return false?
<ul data-role="listview" data-inset="true">
<li>
<label for="slider"></label>Spot
<select name="slider" id="slider" data-role="slider" ONCHANGE="location = this.options[this.selectedIndex].value;">
<option value="schakelen.php?kanaal=a3&actie=uit&optie=0">OFF</option>
<option value="schakelen.php?kanaal=a3&actie=aan&optie=0">ON</option>
</select>
</li>
<ul data-role="listview" data-inset="true">
<li>
<label for="slider"></label>Spot
<select name="slider" id="slider" data-role="slider" ONCHANGE="location = this.options[this.selectedIndex].value;">
<option value="schakelen.php?kanaal=a3&actie=uit&optie=0">OFF</option>
<option value="schakelen.php?kanaal=a3&actie=aan&optie=0">ON</option>
</select>
</li>
Leg eens uit wat je probeert te bereiken.
Wat wil je precies op de server doen?
Wat wil je precies op de server doen?
Maak gebruik van jQuery ;)
De php link schakelt een lamp in mijn huis aan. Dus de pagina moet niet veranderen, zodat ik mijn aan uit schakelaar blijf zien.
Oh, cool.
Iets met Arduino of zo?
nu ja ... hiermee moet je verder kunnen.
index.php
schakelen.php
Iets met Arduino of zo?
nu ja ... hiermee moet je verder kunnen.
index.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Ajax gebruiken om een lamp aan en uit te doen</title>
</head>
<body>
<div id="message"></div>
<ul data-role="listview" data-inset="true">
<li>
<label for="slider">Spot</label>
<select name="slider" id="slider" data-role="slider">
<option value="schakelen.php?kanaal=a3&actie=uit&optie=0">OFF</option>
<option value="schakelen.php?kanaal=a3&actie=aan&optie=0">ON</option>
</select>
</li>
</ul>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function($) { // wordt uitgevoerd als de pagina geladen is
$('#slider').change(function(e) { // wanneer de gebruiker de select verandert, doen we dit:
// Ajax aanroepen
var url = $(this).val(); // this is de <select>. .val() haalt de value op
$.ajax({
url: url,
success: function(message) {
// boodschap tonen in de div
$('#message').html(message);
}
});
});
})
</script>
</body>
</html>
<html lang="en">
<head>
<meta charset=utf-8>
<title>Ajax gebruiken om een lamp aan en uit te doen</title>
</head>
<body>
<div id="message"></div>
<ul data-role="listview" data-inset="true">
<li>
<label for="slider">Spot</label>
<select name="slider" id="slider" data-role="slider">
<option value="schakelen.php?kanaal=a3&actie=uit&optie=0">OFF</option>
<option value="schakelen.php?kanaal=a3&actie=aan&optie=0">ON</option>
</select>
</li>
</ul>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function($) { // wordt uitgevoerd als de pagina geladen is
$('#slider').change(function(e) { // wanneer de gebruiker de select verandert, doen we dit:
// Ajax aanroepen
var url = $(this).val(); // this is de <select>. .val() haalt de value op
$.ajax({
url: url,
success: function(message) {
// boodschap tonen in de div
$('#message').html(message);
}
});
});
})
</script>
</body>
</html>
schakelen.php
Code (php)
Gewijzigd op 21/09/2012 15:43:41 door Kris Peeters
Wordt me toch iets te ingewikkeld vrees ik haha.
Kan ik niet gewoon iets aan de onderstaande regel toevoegen waardoor ik op dezelfde pagina blijf? Het gaat ook om meerdere lampen.
<option value="schakelen.php?kanaal=a3&actie=uit&optie=0">OFF</option>
Kan ik niet gewoon iets aan de onderstaande regel toevoegen waardoor ik op dezelfde pagina blijf? Het gaat ook om meerdere lampen.
<option value="schakelen.php?kanaal=a3&actie=uit&optie=0">OFF</option>
Je hebt dit toch ten minste getest en gezien dat het werkt he?
Je kan dit stand alone testen. gewoon exact copy/pasten.
Nee. Kan niet.
Javascript kan niet zomaar contact maken met de server. Javascript is een computerprogramma (nu ja...) dat draait op de computer van de gebruiker.
Om contact te maken met de server, heb je Ajax nodig.
Dit is een voorbeeld van Ajax (met jQuery).
Een alternatief is dat je werkt via een iframe (al dan niet onzichtbaar).
Je kan dit stand alone testen. gewoon exact copy/pasten.
Sander Zijnstra op 21/09/2012 16:14:18:
Kan ik niet gewoon ....
Nee. Kan niet.
Javascript kan niet zomaar contact maken met de server. Javascript is een computerprogramma (nu ja...) dat draait op de computer van de gebruiker.
Om contact te maken met de server, heb je Ajax nodig.
Dit is een voorbeeld van Ajax (met jQuery).
Een alternatief is dat je werkt via een iframe (al dan niet onzichtbaar).
Gewijzigd op 21/09/2012 16:32:21 door Kris Peeters
Ok dat het php script als het ware in een nieuw onzichtbaar venster opent? Hoe zou dat eruit zien?
Zijn iFrames niet wat achterhaald?
Download jQuery, zet het op de pagina, en gebruik dit bij onChange:
"$('.noodoplossing').load(adressvanpaginadiejeopwiltroepen)" maak van .noodoplossing dan een div, die ontzichtbaar is.
Maar toch, je kunt het beste een ajax request doen naar schakelen.php
Download jQuery, zet het op de pagina, en gebruik dit bij onChange:
"$('.noodoplossing').load(adressvanpaginadiejeopwiltroepen)" maak van .noodoplossing dan een div, die ontzichtbaar is.
Maar toch, je kunt het beste een ajax request doen naar schakelen.php
Ok dan toch maar met Ajax. Het script werkt uiteraard wel mijn lampjes gaan mooi aan en uit. Ik krijg het nog niet voor elkaar met Ajax. Het is dus de bedoeling om meerdere switches onder elkaar te plaatsen. Dat gaat me wel lukken uiteraard.
Ik heb de bestanden even geupload ovllemmer.nl/kaku. Moet natuurlijk nog erg veel aan de opmaak gesleuteld worden, maar wil eerst de switch goed werkend hebben.
schakelen.php
Toevoeging op 22/09/2012 16:15:11:
Of hebben jullie de hoop opgegeven voor mij? Haha
Ik heb de bestanden even geupload ovllemmer.nl/kaku. Moet natuurlijk nog erg veel aan de opmaak gesleuteld worden, maar wil eerst de switch goed werkend hebben.
schakelen.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
//Info: PHP schakelscript v1.0.0.0 voor KAKUcli
//Datum: 2012-09-15
//Door: Sebastiaan Ebeltjes
//Voorbeeld: http://www.website.nl/schakelen.php?kanaal=100&actie=17&optie=0
if (isset($_GET['actie']) && $_GET['actie'] === 'aan') {
echo 'lamp is aan!';
}
else {
echo 'lamp is uit!';
}
$kanaal = $actie = $optie = 0;
if(isset($_GET['kanaal'])) $kanaal = $_GET['kanaal'];
if(isset($_GET['actie'])) $actie = $_GET['actie'];
if(isset($_GET['optie'])) $optie = $_GET['optie'];
if(!file_exists("KAKUcli.exe")) {
die("ERROR1: Het bestand KAKUcli.exe is niet gevonden!");
}
if(!file_exists("TPC200L10.dll")) {
die("ERROR2: Het bestand TPC200L10.dll is niet gevonden!");
}
if(!file_exists("TPC300A.dll")) {
die("ERROR3: Het bestand TPC300A.dll is niet gevonden!");
}
if(checkArrayForEmpty(Array($kanaal, $actie))) {
die("ERROR4: Een belangrijke parameter is niet opgegeven!");
}
exec("KAKUcli.exe ".$kanaal." ".$actie." ".$optie);
function checkArrayForEmpty($array) {
foreach($array AS $value) {
if(!$value) {
return 1;
}
}
return 0;
}
?>
//Info: PHP schakelscript v1.0.0.0 voor KAKUcli
//Datum: 2012-09-15
//Door: Sebastiaan Ebeltjes
//Voorbeeld: http://www.website.nl/schakelen.php?kanaal=100&actie=17&optie=0
if (isset($_GET['actie']) && $_GET['actie'] === 'aan') {
echo 'lamp is aan!';
}
else {
echo 'lamp is uit!';
}
$kanaal = $actie = $optie = 0;
if(isset($_GET['kanaal'])) $kanaal = $_GET['kanaal'];
if(isset($_GET['actie'])) $actie = $_GET['actie'];
if(isset($_GET['optie'])) $optie = $_GET['optie'];
if(!file_exists("KAKUcli.exe")) {
die("ERROR1: Het bestand KAKUcli.exe is niet gevonden!");
}
if(!file_exists("TPC200L10.dll")) {
die("ERROR2: Het bestand TPC200L10.dll is niet gevonden!");
}
if(!file_exists("TPC300A.dll")) {
die("ERROR3: Het bestand TPC300A.dll is niet gevonden!");
}
if(checkArrayForEmpty(Array($kanaal, $actie))) {
die("ERROR4: Een belangrijke parameter is niet opgegeven!");
}
exec("KAKUcli.exe ".$kanaal." ".$actie." ".$optie);
function checkArrayForEmpty($array) {
foreach($array AS $value) {
if(!$value) {
return 1;
}
}
return 0;
}
?>
Toevoeging op 22/09/2012 16:15:11:
Of hebben jullie de hoop opgegeven voor mij? Haha




