PHP in JS-onclick event
ik zoek een oplossing voor mijn probleem.
Volgende code gebruik ik op dit moment:
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
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>
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
+ tekens ben je vergeten na lifenr en geboortedatum.
Code (php)
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
Ik krijg alleen een foutmelding van http.send() nu.
Waarom doe je niet met jquery? Daar kun je met 3 regels dit oplossen..
Als het met JQuery makkelijker en beter kan, dan hoor ik dat zeer graag ;-)
Groeten,
Olivier
Het is overigens geen JAVA maar JavaScript, beiden zijn totaal wat anders.
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
Groeten,
Olivier
Toevoeging op 15/07/2012 20:39:09:
edit: Volgende fout krijg ik bij het testen...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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>
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?
Mis je niet een ) na msg )?
Het lijkt duidelijk te zijn voor mij. Done is geen functie, probeer eens een success callback te maken in en options.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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>
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
Wel allereerst, je doet niks met die response en dus heb je niks met dit scriptje. Ik weet niet wat je doel is?
ik ben niet mee, ik snap niet goed hoe je dit verwerkt (ook niet van die link die eerder gegeven is)...
Groeten
Vertel dan wat je doel is, wat wil je bereiken?
Groeten,
Olivier
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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>
<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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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>
<?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
Het zal wel hier aan liggen:
Verander in lijn 9 de onclick tot dit:
Code (php)
(Zolang lifenr altijd numeriek is, hoeft het niet tussen aanhalingstekens)
Gewijzigd op 17/07/2012 10:33:30 door Kris Peeters
script is aangepast en het werkt (toch), de HTML-code zegt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
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>
<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