Что ж, если предположить, что ваша функция bookmark()
JavaScript вызывается при отправке формы, я думаю, вам нужно только предотвратить отправку формы. Итак, ваш HTML-код будет выглядеть так:
<form onsubmit="event.preventDefault(); bookmark();">
Очевидно, что если вы обрабатываете события в вашем script.js , это будет выглядеть примерно так:
HTML
<form id="bookmark" method="POST">
<input type="number" hidden="hidden" name="bookmark-input" id="bookmark-input" value="{{ $book->id }}"/>
<input type="submit" value="Bookmark this page" />
</form>
JavaScript
function bookmark(book_id, count) {
$.ajax({
type: "post",
url: "save_bookmark",
data: {
b_id: book_id,
p_no: count
},
success: function (response) {
console.log(response);
},
error: function (error) {
console.log(error);
}
});
}
let form = document.getElementById('bookmark');
let count = 1;
console.log(form); //I check I got the right element
form.addEventListener('submit', function(event) {
console.log('Form is being submitted');
let book_id = document.getElementById("bookmark-input").value;
bookmark(book_id, count);
event.preventDefault();
});
Также я бы порекомендовал вам избегать, насколько это возможно, вставки PHP-кода в ваш JavaScript-код. Его трудно поддерживать, он не дает четкого понимания ни тому, ни другому ... Сначала это может показаться хорошей идеей, но это не так. Вы всегда должны найти лучшую альтернативу:)
Например, у вас также есть data-*
для передачи данных в тег HTML через PHP ( подробнее о data- * атрибутах ).