PHP in JS-onclick event

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Olivier Peeters

Olivier Peeters

15/07/2012 11:48:29
Quote Anchor link
Hallo allen,

ik zoek een oplossing voor mijn probleem.

Volgende code gebruik ik op dit moment:

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
<script>
function createRequestObject()
{
var returnObj = false;
if(window.XMLHttpRequest) {
returnObj = new XMLHttpRequest();
} else if(window.ActiveXObject) {
try {
returnObj = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
returnObj = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
return returnObj;
}
var http = createRequestObject();
var target;
// This is the function to call, give it the script file you want to run and
// the div you want it to output to.
function sendRequest(scriptFile, targetElement)
{    
target = targetElement;
try{
http.open('get', scriptFile, true);
}
catch (e){
document.getElementById(target).innerHTML = e;
return;
}
http.onreadystatechange = handleResponse;
http.send();    
}
function handleResponse()
{    
if(http.readyState == 4) {    
try{
var strResponse = http.responseText;
document.getElementById(target).innerHTML = strResponse;
} catch (e){
document.getElementById(target).innerHTML = e;
}    
}
}
</script>


<a href="javascript:void()" onclick="javascript:sendRequest('gegevens.php?id='+lifenr'&geboortedatum='+geboortedatum'&naam='+naam, 'login')">Link</a>


Ik heb de PHP variabelen $row["lifenr"],$row["geboortedatum"],$row["naam"]. Die aan de gelijke variabele gekoppeld moeten worden (+lifenr, +geboortedatum, +naam). De bovenstaande code werkt niet...

Ik heb al liggen kijken waar de fout ligt en of er oplossingen zijn, maar ik vindt er niet echt...

Alvast bedankt!

Groeten,
Olivier
Gewijzigd op 15/07/2012 19:59:45 door Olivier Peeters
 
PHP hulp

PHP hulp

29/03/2024 07:10:43
 
Kumkwat Trender

Kumkwat Trender

15/07/2012 12:20:21
Quote Anchor link
<a href="#" onclick="sendRequest('gegevens.php?id='+lifenr+'&geboortedatum='+geboortedatum+'&naam='+naam, 'login')">Link</a>

+ tekens ben je vergeten na lifenr en geboortedatum.
 
Olivier Peeters

Olivier Peeters

15/07/2012 12:25:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<a href="javascript:void()" onclick="javascript:sendRequest('gegevens.php?id='+lifenr+'geboortedatum='+geboortedatum+'&naam='+naam, 'login')">Link</a>

Bovenstaande code werkt niet (zoals jij had aangegeven)...
Gewijzigd op 15/07/2012 20:00:21 door Olivier Peeters
 
Kumkwat Trender

Kumkwat Trender

15/07/2012 12:27:01
Quote Anchor link
Werkt de jouwe nu wel?

Ik krijg alleen een foutmelding van http.send() nu.
Waarom doe je niet met jquery? Daar kun je met 3 regels dit oplossen..
 
Olivier Peeters

Olivier Peeters

15/07/2012 19:54:28
Quote Anchor link
De mijne werkt niet! Hoe en waar test jij je Javacodes?
Als het met JQuery makkelijker en beter kan, dan hoor ik dat zeer graag ;-)

Groeten,
Olivier
 
- Ariën  -
Beheerder

- Ariën -

15/07/2012 19:55:24
Quote Anchor link
Het is overigens geen JAVA maar JavaScript, beiden zijn totaal wat anders.
 
Olivier Peeters

Olivier Peeters

15/07/2012 19:56:58
Quote Anchor link
Dat had ik wel door, mijn excuses dat ik de naam afkort in de topictitel (aangezien hij in javascript staat is dit wel duidelijk voor mij), wat voor verwarring (kan) zorgen....

edit: Topictitel is nu gewijzigd :)
Gewijzigd op 15/07/2012 19:58:14 door Olivier Peeters
 
Wouter J

Wouter J

15/07/2012 19:59:04
Quote Anchor link
Als je het afkort moet je JS gebruiken, dat is nog korter en ook nog correct. :)

En zou je je code tussen [code] tags willen plaatsen?

En ja, als je AJAX gebruikt moet je bijna wel een framework gebruiken. Gebruik MooTools of jQuery ofzo. Lees even de documentatie en als je er niet uitkomt horen we het wel.

En hoe test je je JavaScript codes? Nou dat doe je door ze in een pagina te zetten en die uit te voeren in een browser. Je opent dan de console (Ctrl + Shift + J of F12 in IE of download FireBug in FireFox) en daar zie je de errors. I.p.v. van de php var_dump versie kun je de console.log functie gebruiken.
Gewijzigd op 15/07/2012 20:06:07 door Wouter J
 
Olivier Peeters

Olivier Peeters

15/07/2012 20:01:07
Quote Anchor link
Alle opmerkingen zijn meegenomen en aangepast ;-) Enig oplossing van jullie kant (linkje, uitwerking?)...

Groeten,
Olivier

Toevoeging op 15/07/2012 20:39:09:

edit: Volgende fout krijg ik bij het testen...

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
<script type="text/javascript">

function testje() {
    $.ajax({
          type: "POST",
          url: "some.php",
          data: { name: "John", location: "Boston" }
        }).done(function( msg ) {
          alert( "Data Saved: " + msg );
        });
    }
</script>

<input value="Add new link" onclick="testje()" />
<div id="results" class="results"></div>


Fout;
$.ajax({type: "POST", url: "some.php", data: {name: "John", location: "Boston"}}).done is not a function


["tab focus: 7"]

Wat doe ik mis?
 
Eddy E

Eddy E

15/07/2012 21:26:32
Quote Anchor link
Mis je niet een ) na msg )?
 
Wouter J

Wouter J

15/07/2012 21:27:40
Quote Anchor link
Het lijkt duidelijk te zijn voor mij. Done is geen functie, probeer eens een success callback te maken in en options.
 
Olivier Peeters

Olivier Peeters

15/07/2012 21:47:54
Quote Anchor link
Ik probeer het nu met deze code:
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
<script type="text/javascript">

function test() {
    $.ajax({ type: "GET",  
        url: "index.php",  
        async: false,
        success : function(text)
        {
            response = text;
        }
});
    
}
</script>

<button onclick="test()">Toevoegen</button>


Ik krijgen geen foutmeldingen. Maar wat doe ik dan wel mis?

Groeten,
Olivier
 
Wouter J

Wouter J

15/07/2012 21:49:50
Quote Anchor link
Wel allereerst, je doet niks met die response en dus heb je niks met dit scriptje. Ik weet niet wat je doel is?
 
Olivier Peeters

Olivier Peeters

15/07/2012 21:54:42
Quote Anchor link
WouterJ,

ik ben niet mee, ik snap niet goed hoe je dit verwerkt (ook niet van die link die eerder gegeven is)...

Groeten
 
Wouter J

Wouter J

15/07/2012 21:58:03
Quote Anchor link
Vertel dan wat je doel is, wat wil je bereiken?
 
Olivier Peeters

Olivier Peeters

15/07/2012 22:06:54
Quote Anchor link
Echo'en van de inhoud van de url (ik roep index.php op dus deze wil ik hier tonen)

Groeten,
Olivier
 
Erwin H

Erwin H

16/07/2012 09:35:06
Quote Anchor link
Als je alleen 1-op-1 de output van het php bestand in een HTML element wilt plaatsen is de functie .load() van jquery een veel handigere functie.
http://api.jquery.com/load/
 
Kris Peeters

Kris Peeters

16/07/2012 10:34:20
Quote Anchor link
Olivier Peeters op 15/07/2012 22:06:54:
Echo'en van de inhoud van de url


echo'en op het scherm is php.
In javascript moet je duidelijk zeggen waar je dit wil tonen.

In je eerste post zie ik iets van "target"
( document.getElementById(target).innerHTML = ... )
Laat het ons daar op houden.

Dat moet zoiets zijn.
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
<div id="target"></div>
<button onclick="test()">Toevoegen</button>
...
<script>
  function test() {
    $.ajax({ type: "GET",  
      url: "index.php",  
      async: false,
      success : function(text) {
        $('#target').html(text);  // = steek tekst als innerHTML van het element met id="target"
      }
    });
  }
</script>



...
Maar dan nog is het vreemd dat je de data zou willen halen op "index.php". Nu ja, het kan.
Gewijzigd op 16/07/2012 10:36:33 door Kris Peeters
 
Olivier Peeters

Olivier Peeters

16/07/2012 21:45:09
Quote Anchor link
Oke, het was maar een voorbeeld, maar de feitelijke uiteindelijke code zo zoiets moeten worden:
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
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <?php
    $row
= array(
            "lifenr" => "55",
            "naam" => "olivier",
            "geboortedatum" => "16101991",
            )

    ?>

<div id="target"><button onclick="test(<?php echo $row['lifenr']; ?>,<?php echo $row['naam']; ?>,<?php echo $row['geboortedatum']; ?>)">Toevoegen</button></div>

<script>
  function test(lifenr,naam,geboortedatum) {
    $.ajax({ type: "GET",  
      url: "gegevens.php?lifenr='+lifenr+'&naam='+naam+'&geboortedatum='+geboortedatum+'",  
      async: false,
      success : function(text) {
        $('#target').html(text);  // = steek tekst als innerHTML van het element met id="target"
      }
    });
  }
</script>


Foutmelding => "olivier is not defined"

Wat gaat er mis?

Ik wil alvast iedereen bedanken voor de hulp ;-)

Groeten,
Olivier
Gewijzigd op 16/07/2012 21:47:59 door Olivier Peeters
 
Kris Peeters

Kris Peeters

17/07/2012 10:31:14
Quote Anchor link
Je moet strings in '' wrappen.

Het zal wel hier aan liggen:

Verander in lijn 9 de onclick tot dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
onclick="test(<?php echo $row['lifenr']; ?>,'<?php echo $row['naam']; ?>','<?php echo $row['geboortedatum']; ?>')">


(Zolang lifenr altijd numeriek is, hoeft het niet tussen aanhalingstekens)
Gewijzigd op 17/07/2012 10:33:30 door Kris Peeters
 
Olivier Peeters

Olivier Peeters

17/07/2012 10:47:55
Quote Anchor link
Hallo Kris Peeters,

script is aangepast en het werkt (toch), de HTML-code zegt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<div id="target"><button onclick="test(55,'olivier','16-10-1991')">Toevoegen</button></div>

<script>
  function test(lifenr,naam,geboortedatum) {
    $.ajax({ type: "POST",  
      url: "gegevens.php?lifenr='+lifenr+'&naam='+naam+'&geboortedatum='+geboortedatum+'",  
      async: false,
      success : function(text) {
        $('#target').html(text);  // = steek tekst als innerHTML van het element met id="target"
      }
    });
  }
</script>


Maar als ik op de opgeroepen pagina een print_r($_GET) doe, dan krijg ik:
Array ( [lifenr] => ' lifenr ' [naam] => ' naam ' [geboortedatum] => ' geboortedatum ' )

Maak ik nu een verkeerde interpretatie en moet ik deze gegevens er anders uit afvragen, of gaat er toch iets mis?

Lifenr is inderdaad altijd nummeriek, bedankt voor te tips!

Groeten,
Olivier
 

Pagina: 1 2 volgende »



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.