php aan roepen zonder redirect
<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>
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.
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
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 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?
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
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