Проблем с кода от подготовката за изпита


0
Здравейте, колеги. Някъде около 59-тата минута от вчерашното видео от подготовката за изпита Дончо прави ajax заявка към url "api/users". На видеото след като го тества работи (изписва му User registered в конзолата), но при мен дава грешка 404 (пиша кода заедно с него, инсталирал съм библиотеките и постоянно проверявам да не съм изпуснал нещо). Предполагам, че защото при мен този файл липсва, но пък и сред файловете на Дончо не го виждам. След това търси дали user-a е регистриран в data.json. Защо го прави, след като заявката е към api/users? Не би ли трябвало да е към data.json (явно не ама защо :Д)?  



Отговори



1
api/users не е файл, ами е endpoint, който като го достъпиш ти връща даден ресурс, това е REST в REST url-a не винаги е като името на файла. Сега, защо не ти бачка не мога да ти кажа ако не дадеш някакъв код, дай това което си написал и може да ти помогна.

от sa66eto (1945 точки)


0
Оправих се. Иначе благодаря :)

от adriannn1 (145 точки)

3
От любопитство колега, бихте ли споделили какъв беше проблемът и решението? :) Поздрави!

от todorm85 (1347 точки)



0

Здравейте, колего. Аз също искам да се обърна към вас с молба за помощ от подготовката за изпит при Евлоги. Когато пускам приложението след като съм линкнала всички библиотеки ми дава следното съобщение за грешка при зареждане на страницата от app.js като от Network tab-a виждам, че референциите ми към jquery и sammy не са се заредили.

Uncaught (in promise) Error: n.match is not a function
Error loading http://localhost:3000/js/app.js
    at l.normalize (http://localhost:3000/bower_components/system.js/dist/system.js:5:12136)
    at l.r.import (http://localhost:3000/bower_components/system.js/dist/system.js:4:9494)
    at l.e [as import] (http://localhost:3000/bower_components/system.js/dist/system.js:4:15283)
    at l.t (http://localhost:3000/bower_components/system.js/dist/system.js:4:12307)
    at http://localhost:3000/bower_components/system.js/dist/system.js:4:25162

Ако някой може да помогне ще се радвам, че вече не знам какво ще се прави на този изпит, тъй като постоянно имам проблеми с зареждането на скриптовете. 




от bo071992 (45 точки)


0
Може да съм много далеч от истината, но си мисля, че ако babel не ти е инсталиран глобално, може да е от това. Ако е така, вариант е да промениш малко настройките на config файла:
System.config({
transpiler: "babel",
babelOptions: {
//optional: [
// "runtime"
//]
},
map: {
babel: 'node_modules/babel-core/browser.js',
"babel-runtime": 'node_modules/babel-core/node-modules'
}
});

от shoko (1073 точки)

0

Не знам дали вече сте разрешили проблема - но мисля,че трябва да напишете в терминала

1.)bower install

2.) node app.js

Надявам се да е това :)


от Alex_H (1616 точки)



0

И при мен същата работа. Опитах с порт 3000, иначе съм си с default 8080 - не става. Не виждам и причина да е нещо от порта.

data.js

var data = function(){ function register(user) { var promise = new Promise(function(resolve, reject) { var url = 'api/users/'; $.ajax(url, { method: 'POST', contentType: 'application/json', data: JSON.stringify(user), success: function(res) { resolve(res); } }); }); return promise; } function login(user) { } return { users: { register: register, login: login } }; }();

и user-controllers.js

var usersController = function() { function login(context) { } function register(context) { templates.get('register') .then(function(template){ context.$element().html(template()); // attach events $('#btn-register').on('click', function(){ var user = { username: $("#tb-username").val(), password: $("#tb-password").val() }; data.users.register(user) .then(function() { console.log('User registered'); }); }); }); } return { register: register, login: login }; } ();

Уж всичко е същото, ама не знам.


от Bruno (921 точки)


2
Портът е 3013 - код :)
var port = process.env.PORT || 3013;

от dentia (12519 точки)

0

Пак не ще.

POST http://localhost:3013/api/users 405 (Method Not Allowed)     jquery.js:8630
Като цъкна на jquery-то ме праща на този ред:

xhr.send( options.hasContent && options.data || null );

който отговаря на условията, но гърми.

В нета чета, че този post request се опитва да се свърже с друг domain.


от Bruno (921 точки)


0
За да не отварям нова тема ще пиша тук.

Става дума за миналогодишния изпит. Дава ми грешка, която не мога да разбера как да оправя. Ето я и нея Ерар
register-controller.js на 26 ред ми е .catch(function...);
От няколко часа ме мъчи и не мога да се оправя..
Ето как му подавам данните:
var username = $('#tb-reg-username').val(); var pass = $('#tb-reg-password').val(); var hashed = CryptoJS.SHA1(username + pass).toString(); var user = { username: username, authCode: hashed }; var url = '/user'; requester.post(url, user).then...

от jumarto (808 точки)


0

Можеш да видиш по-подробно за грешките в папка app/ и там controllers/user съответно за проверките, които се правят от сървъра за потребителите.Тази грешка я дава при невалиден username или authCode при регистрация.

Има валидация на username, която е от 6 до 40 символа, а ако си я направил можеш да пробваш с примерните потребител и парола от описанието на задачата.С тях би трябвало всичко да е наред и authCode-а да е същия с този от описанието.


от baretata (934 точки)

0
Случайно се сетих, че username-a трябва да е между 6 и 40 символа... а аз всеки път го пробвам с 'asd' .................... 2 часа.
Благодаря, колега, за отговора все пак, ще знам за в бъдеще там да гледам :)

от jumarto (808 точки)



0

При мен има друг проблем с кода от подготовката на Дончо. При логване и разлогване на юзър е добавя ? пред #/. Някой да има представа от какво е причинено и как се оправя?

В оригиналния кое е sammyApp.run('#/user');, но го промених на sammyApp.run('#') и от тогава стана проблема при логване, а иначе е само при разлогване.


от lubzey (161 точки)


1

Може би нямаш route '#/'

Имаш ли this.get('#/, function() { .... })?


от DonchoMinkov (12706 точки)

2

Въпросителният се добавя при Sign out. При мен се появява същият бъг. Решението е да добавиш един ред в event handler-а закачен за '#btn-sign-out'. Този ред е същият, който е записан в хендлъра на '#btn-sign-in' -- 'e.preventDefault();' -- Също така трябва да добавиш и параметър на функцията (event handler-а), който да бъде пак 'е'. Като резултат ще получиш нещо такова:

$('#btn-sign-out').on('click', function(e) {
       e.preventDefault();

.......... и т.н.


от veselints (506 точки)