php aan roepen zonder redirect

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sander Zijnstra

Sander Zijnstra

21/09/2012 14:18:06
Quote Anchor link
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>
 
PHP hulp

PHP hulp

16/05/2024 12:01:18
 
Kris Peeters

Kris Peeters

21/09/2012 14:32:12
Quote Anchor link
Leg eens uit wat je probeert te bereiken.

Wat wil je precies op de server doen?
 
Marvin H

Marvin H

21/09/2012 14:33:37
Quote Anchor link
Maak gebruik van jQuery ;)
 
Sander Zijnstra

Sander Zijnstra

21/09/2012 14:34:34
Quote Anchor link
De php link schakelt een lamp in mijn huis aan. Dus de pagina moet niet veranderen, zodat ik mijn aan uit schakelaar blijf zien.
 
Kris Peeters

Kris Peeters

21/09/2012 15:43:27
Quote Anchor link
Oh, cool.

Iets met Arduino of zo?

nu ja ... hiermee moet je verder kunnen.

index.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<!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>


schakelen.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
// doe hier wat je moet doen ...

// boodschap terug naar javascript sturen

if (isset($_GET['actie']) && $_GET['actie'] === 'aan') {
  echo 'lamp is aan!';
}

else {
  echo 'lamp is uit!';
}

?>
Gewijzigd op 21/09/2012 15:43:41 door Kris Peeters
 
Sander Zijnstra

Sander Zijnstra

21/09/2012 16:14:18
Quote Anchor link
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>
 
Kris Peeters

Kris Peeters

21/09/2012 16:26:56
Quote Anchor link
Je hebt dit toch ten minste getest en gezien dat het werkt he?
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
 
Sander Zijnstra

Sander Zijnstra

21/09/2012 16:37:38
Quote Anchor link
Ok dat het php script als het ware in een nieuw onzichtbaar venster opent? Hoe zou dat eruit zien?
 
Thomas de Roo

Thomas de Roo

21/09/2012 17:17:09
Quote Anchor link
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
 
Sander Zijnstra

Sander Zijnstra

21/09/2012 22:16:38
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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;

}


?>


Toevoeging op 22/09/2012 16:15:11:

Of hebben jullie de hoop opgegeven voor mij? Haha
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.