Професионална програма
Loading...
Barish avatar Barish 8 Точки

Sammy.js problem with redirection when using post

Когато искам да post-на ме прехвърля към localhost и губи пътя до index.html

app.router = Sammy(function () {
var selector = '#wrapper';

this.get('#/allBooks', function () {
controller.loadAllBooks(selector);
});
});

app.router.run('#/allBooks');

а това ми е формата

<div id="form">
<label for="author">Title:</label>
<input id="title" type="text"/>
<label for="title">Author:</label>
<input id="author" type="text"/>
<label for="isbn">Isbn:</label>
<input id="isbn" type="text"/>
<button type="submit" id="add">Add</button>
</div>

Като цъкна на бутона Add обекта се записва в базата данни обаче се губи пътя и ми дава 404 not found.
Ако ми помогнете ще съм много благодарен :)
Тагове:
0
JavaScript Applications
Barish:
Проблемът е решен
AleksandurSeferinkin avatar AleksandurSeferinkin 335 Точки

Грешно подхождаш с пращането на данните. Всяка форма има submit евент.

$( "form" ).on("submit", function(e) {
   e.preventDefault();
   e.stopPropagation();
});

 

Тук има 2 важни стъпки, които трябва да са най-отгоре:

e.preventDefault() - това премахва default поведението на формата, което е да праща обикновена пост заявка към даден адрес. По този начин спираш рефрешването и можеш пращаш AJAX заявка.

e.stopPropagation() - Чувал си за "event bubbling", нали? SammyJS слуша за евенти от формите и се получава това с изтриването на URL-a. С тази малка функция ще му попречим да хване този "submit" евент и URL-a ще остане непокътнат.

По този начин ще имаш семантичен html с <button type="submit"> и няма да се случва нищо друго освен това, което си сложил в callback-a на евента. :)

1
27/04/2015 00:31:55