Avatar billede EMILTP Novice
17. november 2017 - 13:31 Der er 5 kommentarer

ForEach fejl - Problem med at gennemløb af JSON

$(document).ready(() => {

    SDK.Student.loadNavbar();
    const $EventList = $("#event-list");


    SDK.Event.getEvents((err, Event) => {

        console.log(Event);

        Event.forEach((event) => {


            const eventHtml = ` <!--Tegnet her gør, at man bare kan skrive det som almindelig tekst, og ikke skrive " + + ". -->
        <div class="col-lg-4 book-container">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <h3 class="panel-title">${event.eventName}</h3>
                </div>
                <div class="panel-body">
                    <div class="col-lg-4">
                        <img src="${event.imgUrl}"/>
                    </div>
                    <div class="col-lg-8">
                      <dl>
                        <dt>Description</dt>
                        <dd>${event.description}</dd>
                        <dt>Owner</dt>
                        <dd>${event.owner}</dd>
                        <dt>Date</dt>
                        <dd>${event.eventDate}</dd>
                        <dt>Location</dt>
                        <dd>${event.location}</dd>
                      </dl>
                    </div>
                </div>
                <div class="panel-footer">
                    <div class="row">
                        <div class="col-lg-4 price-label">
                            <p>Kr. <span class="price-amount">${event.price}</span></p>
                        </div>
                        <div class="col-lg-8 text-right">
                            <button class="btn btn-success purchase-button" data-book-id="${event.id}">Add to attending events</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>`;

            $EventList.append(eventHtml);

        });

Event indeholder dette:
[{"idEvent":12,"price":50,"owner":23,"eventName":"abekatten","location":"CBS","eventDate":"dette er en dato","description":"dette er en beskrivelse"},{"idEvent":14,"price":10,"owner":25,"eventName":"testevent","location":"Kilentest","eventDate":"testdato123","description":"testdescription123"},{"idEvent":16,"price":999,"owner":25,"eventName":"HejAlbert","location":"SBC","eventDate":"123nu","description":"dette er nu opdateret"},{"idEvent":17,"price":2004,"owner":25,"eventName":"kryp","location":"kryps","eventDate":"dato","description":"kryptest"}]
Avatar billede erikjacobsen Ekspert
17. november 2017 - 13:40 #1
Hvad er fejlen?
Avatar billede EMILTP Novice
17. november 2017 - 13:45 #2
Uncaught TypeError: Event.forEach is not a function
    at SDK.Event.getEvents (Events.js:11)
    at Object.success (sdk.js:20)
    at fire (jquery-3.2.1.js:3317)
    at Object.fireWith [as resolveWith] (jquery-3.2.1.js:3447)
    at done (jquery-3.2.1.js:9272)
    at XMLHttpRequest.<anonymous> (jquery-3.2.1.js:9514)
Avatar billede Slater Ekspert
17. november 2017 - 13:57 #3
Så er det vel fordi Event ikke er en type der har en forEach-metode. Men vi har ingen mulighed for at vide hvad Event er, eftersom den bliver returneret af getEvents().
Avatar billede EMILTP Novice
17. november 2017 - 14:07 #4
Har prøvet at bruge JSON Stringify, men den fanger stadig ikke..
Avatar billede Slater Ekspert
17. november 2017 - 14:46 #5
Hvorfor vil du stringify'e den? Du kan netop ikke bruge forEach på en string.

Hvad siger en "typeof Event" inde i den funktion? Husk der også er et globalt objekt der hedder Event. Umiddelbart, eftersom "Event" er i ental, ville jeg ikke forvente det var et array overhovedet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester