probleem php string overbrengen naar javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Thomas van den Heuvel

Thomas van den Heuvel

26/01/2015 17:29:13
Quote Anchor link
Zucht, je submit het form, dus je pagina ververst...

Voeg het volgende toe zodat je formulier niet verstuurd wordt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
...
$("#spotifyform").submit(function(e) { // <--- let op de "e"
    e.preventDefault(); // zorgt ervoor dat je niet wegnavigeert van deze pagina
    ...


EDIT: overigens lijkt die '?callback=?' toch niet nodig omdat JSONP die zelf al automatisch toevoegt blijkbaar.
Gewijzigd op 26/01/2015 17:31:18 door Thomas van den Heuvel
 
PHP hulp

PHP hulp

24/04/2024 18:10:34
 
Fabian W

Fabian W

26/01/2015 18:00:51
Quote Anchor link
Hij doet het nu. Bedankt!
En inderdaad zucht. Als ik een ding ook altijd vergeet is het wel de preventDefault (of de return false)

Nog een dingetje. Als ik het form nu submit krijg ik de juiste informatie.
Echter als ik daarna nog een andere lijst wil zien, doet die dat niet.
Bij de tweede keer submit laadt het form dus niet een andere gewenste lijst.
Dat is natuurlijk een bijeffect van de preventdefault.
Weet je hoe we dat het makkelijkst kunnen fixen?
 
Thomas van den Heuvel

Thomas van den Heuvel

26/01/2015 18:14:29
Quote Anchor link
Hm, dat zou eigenlijk gewoon moeten werken lijkt mij.

Hoe ziet je huidige code er uit?

Ik krijg allemaal JSON parse errors. Waarschijnlijk omdat het "ding" wat je terugkrijgt al een JSON object is, en geen string (die geformatteerd is volgens JSON, en geparsed moet worden om als JSON object gebruikt te kunnen worden). Heb je al geprobeerd om het parsen achterwege te laten?
 
Fabian W

Fabian W

26/01/2015 18:17:55
Quote Anchor link
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
// deze functie wordt automatisch aangeroepen als de pagina geladen is.
window.onload = function loadJSON()
{
  // de HTML-elementen waar we een gebeurtenis van willen registreren of waaraan we iets willen wijzigen.
  var country2 = document.getElementById("country");
  var chart2 = document.getElementById("chart");
  var interval2 = document.getElementById("interval");
  var button = document.getElementById("go_button");

  // we maken een functie die aangeroepen moet worden als er op de button geklikt wordt
  $("#spotifyform").submit(function(e){
  e.preventDefault();
  
    // we slaan de gekozen optie van de <select> country op in een variabele met de naam country2
    var country = country2.options[country2.selectedIndex].value;
    var chart = chart2.options[chart2.selectedIndex].value;
    var interval = interval2.options[interval2.selectedIndex].value;

    var url = "http://charts.spotify.com/api/tracks/" + chart + "/" + country + "/" + interval + "/latest";
    
    // haal de data op van de url en sla deze op in de variabele data
    $.ajax({
      'url':      url + '?callback=?',
      'dataType': 'jsonp',
      'error':    function(xhr, status, error)
      {
        alert(error.message);
      },
      'success':  function(json)
      {
        var html = '<table>';
            // traverse tracks
            $.each(json.tracks, function() {
                // traverse track rows
                html += '<tr>';
                $.each(this, function(k, v) {
                    if (k == 'artist_name' || k == 'track_name') {
                        html += '<td>'+v+'</td>';
                    }
                });
                html += '</tr>';
            });
           html += '</table>';
           $('#spotifylist').append(html);
      } // succes ajax
    }); // $.ajax
  }); // form submit
} // window on load


Nog iets, je output alleen track en artiest, maar het nummmer van de combinatie lijkt me ook wel handig ;-)

Toevoeging op 26/01/2015 18:28:09:

Fixed It! Die fout de tweede submit zat waarschijnlijk in het stuk met de k's en v's.
Zo doet die het:

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
// deze functie wordt automatisch aangeroepen als de pagina geladen is.
window.onload = function loadJSON()
{
  // de HTML-elementen waar we een gebeurtenis van willen registreren of waaraan we iets willen wijzigen.
  var country2 = document.getElementById("country");
  var chart2 = document.getElementById("chart");
  var interval2 = document.getElementById("interval");
  var button = document.getElementById("go_button");

  // we maken een functie die aangeroepen moet worden als er op de button geklikt wordt
  $("#spotifyform").submit(function(e){
  e.preventDefault();
  
    // we slaan de gekozen optie van de <select> country op in een variabele met de naam country2
    var country = country2.options[country2.selectedIndex].value;
    var chart = chart2.options[chart2.selectedIndex].value;
    var interval = interval2.options[interval2.selectedIndex].value;

    var url = "http://charts.spotify.com/api/tracks/" + chart + "/" + country + "/" + interval + "/latest";
    
    // haal de data op van de url en sla deze op in de variabele data
    $.ajax({
      'url':      url + '?callback=?',
      'dataType': 'jsonp',
      'error':    function(xhr, status, error)
      {
        alert(error.message);
      },
      'success':  function(json)
      {
        HTML = "<table id='chart'> <thead><tr id='row2'><th id='dw'></th><th id='song'>Artiest</th><th id='song'>Titel</th></tr></thead><tbody>";
        var x=json.tracks;
        for (i=0;i<x.length;i++)
          {
          HTML += "<tr id='row1'><td id='dw'>";
          HTML += i+1;
          HTML += "</td><td id='song'>";
          HTML += x[i].artist_name;
          HTML += "</td><td id='song'>";
          HTML += x[i].track_name;
          HTML += "</td></tr>";
          }
        HTML += "</tbody></table>";
        
        document.getElementById("spotifylist").innerHTML = HTML;
      } // succes ajax
    }); // $.ajax
  }); // form submit
} // window on load


Toevoeging op 26/01/2015 18:29:41:

Ik vind trouwens de tabel zo opbouwen zo ook veel intuïtiever.

Toevoeging op 26/01/2015 18:31:41:

Bedankt! Hij werkt goed zo.
Ook bedankt voor de grondige uitleg die je hebt gegeven. Daardoor leer ik er meer van.
 
Thomas van den Heuvel

Thomas van den Heuvel

26/01/2015 19:55:17
Quote Anchor link
Euhm, "append" voegt een element toe aan het einde van de inhoud een HTML-tag, hij plakt dus de tweede lijst aan de eerste vast, dat was het waarschijnlijk.
 

Pagina: « vorige 1 2



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.