PHP via ajax, javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans De Ridder

Hans De Ridder

17/05/2016 20:42:53
Quote Anchor link
Ik heb het volgende script gevonden.
Maar krijg telkens "undefined".
En de tekst in de DIV blijft gewoon staan.
Hij ziet wel dat API.PHP geladen is.
En hij geeft ook 12 keer de melding (aantal markers in de database);



id: undefined naam: undefined adres: undefined lat: undefined lng: undefined type: undefined

API.PHP
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$result = mysql_query("SELECT * FROM $tableName");          //query
  $data = array();  
while ( $row = mysql_fetch_assoc($result))
{
$data[] = $row;
}
echo json_encode($data);


CLIENT.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
<div id="output">this element will be accessed by jquery and this text will be replaced</div>

  <script type="text/javascript">

  $.ajax({  
          url: 'api.php',
      data: "",
      dataType: 'json',  
      success: function(rows)      
      {
            for (var i in rows)
        {

        var row = rows[i];          
         var id = row[0];
         var name = row[1];
          var address = row[2];
          var lat = row[3];
          var lng = row[4];
          var type = row[5];    
          $('#output').append("<b>id: </b>"+id+"<b> naam: </b>"+name+"<b> adres: </b>"+address+"<b> lat: </b>"+lat+"<b> lng: </b>"+lng+"<b> type: </b>"+type)
                  .append("<hr />");
        }
      }
    });
 
PHP hulp

PHP hulp

26/04/2024 02:34:14
 
Thomas van den Heuvel

Thomas van den Heuvel

17/05/2016 21:00:03
Quote Anchor link
Je haalt $row op met fetch_assoc, en vervolgens lees je deze uit in JSON alsof deze geconstrueerd was middels fetch_row...

Indien je met AJAX/JavaScript aan de slag gaat zorg dan ook dat je fatsoenlijk kunt debuggen, dan worden dit soort vragen triviaal.

Gebruik console.log() en maak gebruik van de netwerktab van je development balk in je browser (doorgaans onder functietoets F12).
 
Hans De Ridder

Hans De Ridder

17/05/2016 21:17:58
Quote Anchor link
Bedankt voor je snelle reactie Thomas.
Het is een bestaand script, en volgens de reacties werkte het.
Ik kan ook in de console zien dat api.php wordt gelezen zonder foutmelding.
In api.php wordt ook alles netjes opgehaald.
En er worden ook 12 regels geschreven in client.php, maar de velden zijn leeg.
Maar zal er nog eens op studeren....
 
Ferdi R

Ferdi R

17/05/2016 21:41:32
Quote Anchor link
Ik denk dat jou api.php niets ophaalt, klopt de tabelnaam ect wel?

SELECT * FROM $tableName
 
Marthijn Buijs

Marthijn Buijs

17/05/2016 21:46:55
Quote Anchor link
Ferdi R op 17/05/2016 21:41:32:
Ik denk dat jou api.php niets ophaalt, klopt de tabelnaam ect wel?

SELECT * FROM $tableName


Het verwijst naar een variable, alleen dan zonder quotes.
 
Hans De Ridder

Hans De Ridder

17/05/2016 21:48:09
Quote Anchor link
ik heb het al hersteld.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
while ( $row = mysql_fetch_array($result))


$tableName staat al eerder vermeld...
Het werkt nu in principe wel.
 
- Ariën  -
Beheerder

- Ariën -

17/05/2016 22:18:42
Quote Anchor link
Ai, waarom gebruik je nog de verouderde mysql_* functies van PHP?
gebruik liever mysqli_*() of PDO als je met de tijd mee wilt gaan.
 
Hans De Ridder

Hans De Ridder

18/05/2016 00:32:37
Quote Anchor link
Je hebt helemaal gelijk Arien.
Heb een mooie tuto gevonden op dit forum.
Want op de een of andere manier lukt het me nog steeds niet.

Dit stukje script was een studie. Kijken welke methoden het meest geschikt zijn in een toepassing.
Concreet gaat het om het vervangen van een ajax-databestand (txt) door de gegevens uit de database.

ajax: '../ajax/data/arrays.txt',

Dit is stukje uit script dat een/twee scroll tabel maakt met een sorteer en zoekfunctie.
Met het ajax-databestand werkt het prima.

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
$(document).ready(function() {
    $('a[data-toggle="tab"]').on( 'shown.bs.tab', function (e) {
        $.fn.dataTable.tables( {visible: true, api: true} ).columns.adjust();
    } );
    
    $('table.table').DataTablse( {
        ajax:           '../ajax/data/arrays.txt',
        scrollY:        200,
        scrollCollapse: true,
        paging:         false
    } );
 
    // Apply a search to the second table for the demo
    $('#myTable2').DataTable().search( 'New York' ).draw();
} );


Werkend voorbeeld:

https://datatables.net/examples/api/tabs_and_scrolling.html
Gewijzigd op 18/05/2016 00:39:14 door Hans De Ridder
 
Hans De Ridder

Hans De Ridder

19/05/2016 22:11:19
Quote Anchor link
De basis heb ik nu gereed.
Voor de geïnteresseerden:

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
$table = 'markers';
$primaryKey = 'id';
$columns = array(
    
    array( 'db' => 'name', 'dt' => 0 ),
    array( 'db' => 'address',  'dt' => 1 ),
    array( 'db' => 'lat',   'dt' => 2 ),
    array( 'db' => 'lng',     'dt' => 3 ),
    array( 'db' => 'type',     'dt' => 4 ),
);
 
// SQL server connection information
$sql_details = array(
    'user' => 'xxxxxxxx',
    'pass' => 'xxxxxxxxxxxxxxxx',
    'db'   => 'xxxxxxxxxx',
    'host' => 'xxxxxxxxx'
);
 
require( 'ssp.class.php' );
 
echo json_encode(
    SSP::simple( $_GET, $sql_details, $table, $primaryKey, $columns )
);


CLIENT:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
$(document).ready(function() {
    $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "processing.php",
            "scrollY": 200,
            "scrollCollapse": true,
            "paging":         true
    } );
     } );
 



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.