Resultaat AJAX request weergeven in tekstveld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter van den Dungen

Peter van den Dungen

06/01/2013 15:11:33
Quote Anchor link
Ik gebruik onderstaand script om, afhankelijk van de keuze in een selectbox, een query samen te stellen. Als ik het resultaat weergeef in een divje gaat alles goed. Maar hoe kan ik een resultaat weergeven in een tekstveld? Ik wil bijvoorbeeld de achternaam opzoeken met de query en daarna weergeven in het tekstveld. Iemand die me verder kan helpen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<form name="form1">
 <select name="users" onchange="showUser(this.value)">
 <option value="">Selecteer</option>
 <option value="100">Peter</option>
 <option value="101">Klaas</option>
 <option value="102">Jan</option>
 <option value="103">Piet</option>
 </select>
</form>


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
function showUser(str)
 {
 if (str=="")
   {
   document.getElementById("input1").innerHTML="";
   return;
   }
if (window.XMLHttpRequest)
   {// code for IE7+, Firefox, Chrome, Opera, Safari
   xmlhttp=new XMLHttpRequest();
   }
 else
   {// code for IE6, IE5
   xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
   }
 xmlhttp.onreadystatechange=function()
   {
   if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("input1").innerHTML=xmlhttp.responseText;
     }
   }
 xmlhttp.open("GET","get_users.php?q="+str,true);
 xmlhttp.send();
 }



<<get_users.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
<?php
include("Includes/functions.php");
include("Includes/connection.php");

$q=$_GET["q"];

$query= mysql_query("
SELECT
*
FROM
test_tabel
WHERE
id = '"
.$q."'"
,$connection);
$row = mysql_fetch_assoc($query);
 
echo $row['achternaam'];

 
mysql_close($connection);
 ?>
Gewijzigd op 06/01/2013 15:24:14 door Peter van den Dungen
 
PHP hulp

PHP hulp

25/11/2024 22:48:56
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/01/2013 16:23:58
Quote Anchor link
document.getElementById('input1').value = xmlhttp.responseText
 
Peter van den Dungen

Peter van den Dungen

06/01/2013 17:01:46
Quote Anchor link
Dankjewel, het werkt goed zo.
Stel, ik wil niet alleen de achternaam ophalen, maar ook leeftijd, geslacht etc.
Zoewel achternaam, leeftijd en geslacht moeten in een apart tekstveld worden weergegeven. Is dit alleen te doen door 3 verschillende functies aan te roepen, of kan dit in 1 functie?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/01/2013 18:39:25
Quote Anchor link
Ja hoor dat kan in één functie:
In php:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo json_encode(array('name' => 'Dungen', 'sex' => 'M', 'leeftijd' => 25);
?>

Binnen onreadystatechange
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
var data = JSON.parse(xmlhtpp.responseText);
document.getElementById('input1').value = data.name;
 
Peter van den Dungen

Peter van den Dungen

06/01/2013 20:14:59
Quote Anchor link
Ik kom er nog niet helemaal uit.
De functie is als volgt:
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
function getR(str)
 {
   if (str=="")
    {
      document.getElementById('input1').value = xmlhttp.responseText
      return;
    }
  
   if (window.XMLHttpRequest)
     { // code for IE7+, Firefox, Chrome, Opera, Safari
       xmlhttp=new XMLHttpRequest();
     }
     else
       {  // code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
       }
   xmlhttp.onreadystatechange=function()
      {
       if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
           //document.getElementById('input1').value=                 xmlhttp.responseText
          
               var data = JSON.parse(xmlhtpp.responseText);
           document.getElementById('input1').value = data.name;
           }
       }
      
   xmlhttp.open("GET","ophalen.php?q="+str,true);
   xmlhttp.send();
 }


Het php-gedeelte zo:
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
<?php
include("Includes/functions.php");
include("Includes/connection.php");

$q=$_GET["q"];

$query= mysql_query("
SELECT
*
FROM
test
WHERE
id = '"
.$q."'"
,$connection);

$row = mysql_fetch_array($query);

echo json_encode(array('name' => 'Dungen', 'sex' => 'M', 'leeftijd' => 25));

mysql_close($connection);
 ?>


Ik heb de array nog niet gevuld met de query.
Moet de hele array wel op deze manier worden geëchood?
Het tekstveld blijft leeg of de hele array komt erin te staan {name ....}
En hoe echo ik leeftijd in het andere (2e) tekstveld?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

06/01/2013 21:18:49
Quote Anchor link
Een kleine maar desastreuze typo op regel 23 in het javascript: xmlhttp.responseText moet het zijn.
De andere velden kan je benaderen via data.leeftijd en data.sex
 



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.