Workshop 1: Simple Forum with jQuery and Promises


5
Здравейте, аз  съм онлайн и гледайки заданието в Workshop 1 ми е толкова неясно какво трябва да се направи, че даже не знам какъв въпрос да задам. Направих Starting the node server, а сега какво?



Отговори



5

Като за начало на ред 165 в index.html трябва да промениш <script src="./scripts/data-solution.js"></script> на

<script src="./scripts/data.js"></script>

От там нататък почваш да пишеш заявки в data.js в празните функции - threadsAddthreadById

Като за още по-голямо начало изгледай някоя подготовка от миналата година, че така директно няма да разбереш какво се случва, примерно Forum на Дончо от миналата година, поне частта с правенето на заявките


от georgivelikov (1844 точки)


0

Защо ми дава тези грешки в конзолата, имам си bower_components в папката

picture



0
Трябва да изпълниш bower install, подобно на npm install.

от cuki (7696 точки)



0

Привет, 

Като допълнение ще е супер ако някой колега, който е бил на уъркшопа вчера, сподели дали ще има видео.


от Milenkata (259 точки)


1
Не, няма запис

от zorie (170 точки)

1
Видео няма, защото беше самостоятелна работа с индивидуална помощ от страна на трейнърите.

от dushka.dragoeva (1324 точки)



0
Понеже гледам, че има домашно за уъркшопа, трябва ли да го качваме ? 

от magadisho (823 точки)


0
До колкото разбрах, това ще е домашното

от pdimova (256 точки)


3

Защо има уоркшопи само за тези, които могат да присъстват, останалите, които по една или друга причина не можем да присъстваме как да се подготвяме?


от rossi.bundeva (1059 точки)


2
Днес часове наред се занимавам с настройката на bower и не става и не става, кога ще стигна до писане на заявки, които пък изобщо не разбрах, не знам. Предполагам на присъствено записаните курсисти тези неща са им обяснени на workshop-a


1

## Starting the node server
- Open CMD/Terminal and navigate to the checked-out repository with the workshop
- Run `npm install` in the CMD/Terminal
    - A folder `node_modules` should appear
- Run `bower install` in the CMD/Terminal
    - _Note_: If you do not have bower installed do so by running `npm install -g bower`
    - A folder `bower_modules` should appear
- Run `npm start` and you should see a message like: `Server is running at http://localhost:1509`
    - You can test it by browsing to `http://localhost:1509/api/threads`

Това е копи пейст от README.md-то на задачата

тук


от todorovh (2055 точки)



1

Някой да сподели как да направим този JSONP request ? 
Правя разни работи и резултата се свежда главно до 3 резултата: 

- връща текущия html при success
- прави огромно количество грешки (от рода на 5000 грешки/ сек) и едва успявам да затворя chrome
- връща ми 400 bad request

Просто не ми се получава. Бих бил много благодарен, ако някой сподели тази част от решението.


от StoikoNeykov (2621 точки)


3

от pspassova (255 точки)

0
return new Promise((resolve, reject) => { $.getJSON(REDDIT_URL) .done(resolve) .fail(reject); });

от Boray (666 точки)


0
Въпрос => Доколкото схванах, имаме право да ръчкаме всичко в public папката, но само в нея. -> Да ? % Не?

от Boray (666 точки)


0
Не мога да добавя този John от лекцията Consuming Web Services и това е...стигнах до някъде - грешка -  Uncaught ReferenceError: people is not defined...И къде е дефиниран този масив people?  



2
Покажи от къде гледаш/ какво пишеш плиис.

от todorovh (2055 точки)

0
Гледам лекцията: https://telerikacademy.com/Courses/LectureResources/Video/8714/%D0%92%D0%B8%D0%B4%D0%B5%D0%BE-16-%D1%81%D0%B5%D0%BF%D1%82%D0%B5%D0%BC%D0%B2%D1%80%D0%B8-2016-%D0%94%D0%BE%D0%BD%D1%87%D0%BE, правя всичко стъпка по стъпка, пуснах този сървър api/people и би трябвало да работи като в лекцията, но не става.




0

Здравейте, 

Как успяхте да рефрешнете отделен UI component? Пробвах по няколко начина (със селектиране на DOM елемента и settimeout, с location.reload(true), с window.location = новия url, обаче нищо..Добавям нов thread/message - запазвам ги в data и те са там, но трябва да рефрешна цялата страница, за да ги видя и съответно отново да кликна на threads, или на конкретен thread за съобщенията.


от Milenkata (259 точки)


4
За threads : $('#btn-threads').trigger('click');
за съобщенията: $(`div[data-id ="${threadId}"] > div > h3 > a`).trigger('click');
като threadId идва от параметрите на функцията (ако решиш да го използваш другаде трябва да вземеш id от някъде).

от StoikoNeykov (2621 точки)

0
Много благодаря! 

от Milenkata (259 точки)



0

За "Workshop" само "Simple Forum" ли се изпраща като домашно ?


от Boray (666 точки)


0

Здравейте,

Бихте ли ми помогнали с POST заявките от Workshop 1:

Заявката ми за добавяне на нов THREAD е:

function threadsAdd(title) {
return new Promise((resolve, reject) => {
$.ajax({
url: 'api/threads',
method: 'POST',
data: JSON.stringify({"title": title}),
contentType: 'application/json',
})
.done(resolve)
.fail(reject);
})
}

Тя ми добавя нов THREAD, но не му присвоява user и postDate.

Заявката ми за добавяне на нов MESSAGE З THREAD е:

function threadsAddMessage(threadId, content) {
return new Promise((resolve, reject) => {
$.ajax({
url: 'api/threads/:id/messages',
method: 'POST',
data: JSON.stringify({"username": username, "content": content}),
contentType: 'application/json',
})
.done(resolve)
.fail(reject);
})
}

Със сигурност имам някаква генерална грешка, защото не ползвам параметрите които ми подава функцията. А самата заявка не ми генерира нищо независимо, че ми изписва че успешно съм добавил съобщение!


от Boris_Achkov (30 точки)


3

И в двата метода не вземаш текущия user - ползвай userGetCurrent(). Ето как е при мен единия метод, другия е по подобен начин:

function threadsAdd(title) {
    return new Promise((resolve, reject) => {
        let username = userGetCurrent()
            .then((username) => {
                let body = { title, username };
            
                $.ajax({
                    type: 'POST',
                    url: 'api/threads',
                    data: JSON.stringify(body),
                    contentType: 'application/json'
                }).done(data => resolve(data))
                  .fail(err => reject(err));
            });
    });
  }


от todor_ia (132 точки)

0
Благодаря ти колега!

от Boris_Achkov (30 точки)