Ajax, как я понял, существует для передачи данных на сервер и обработки ответа от него.Важное уточнение - без перезагрузки страницы. То есть как раз поведение противоположное тому что вам надо.
Знаю, что можно сохранять их, например, в локальном хранилище или куках, но... Выглядит это не особо профессионально :D.Зависит от целей и задач передачи. Если данные чисто информационного характера, не влияющие на функционал серверной части, то хранение в куках или локалстораже оправдано (например некоторая кастомизация внешнего вида станиц на основе жс и переменных из локального хранилища). Защищенные данные обычно хранят на стороне сервера, например в сессии.
Route::get('/search/{search}', function ($search) {
return $search;
})->where('search', '.*');
почему не пишут легкий в реализации SPA без всяких фреймворкахПотому что "загрузить всю страницу в фоне, а не просто через стандартный браузерный механизм перехода по ссылке" - это ещё не SPA.
$('body').on('submit', 'form', function() { ... });
<ul>
<li><img src="https://picsum.photos/150/150" alt></li>
<li><img src="https://picsum.photos/150/150" alt></li>
<li><img src="https://picsum.photos/150/150" alt></li>
<li><img src="https://picsum.photos/150/150" alt></li>
<li><img src="https://picsum.photos/150/150" alt></li>
</ul>ul {
display: inline-flex;
}
ul:active li:not(:hover) {
filter: brightness(40%)
} </button>. При использовании данного тега есть свои плюсы и одним из них является поддержка фокуса по дефолту, т.е если юзать например </div>, то тогда придётся делать дополнительные телодвижения чтобы кнопка слепленная из тега </div> - корректно принимала на себя фокус, например, с клавиатуры. Да и к тому же более семантично использовать </button> для подобных целей. Хотя можно использовать и тег <input>, но в данной ситуации, он совершенно не к месту.
$sum = array_sum(array_column($arr, 'price'));
foreach ($arr as &$n) {
$n['weight'] = number_format($n['price'] / $sum * 100, 2).'%';
} inArray() возвращает ... ещё одну функцию, которую только что создала при вызове:function inArray(arr) {
const result = function(x) {
// внутри этой функции будет ещё и доступен
// arr, с которым вызвали inArray()
return arr.includes(x);
};
return result;
}Т.е. вызов inArray() с каким-то массивом возвращает всего лишь ещё одну функцию, которая принимает любой аргумент, но ещё и «запомнила» конкретный arr, с которым её создали.const myFilter = inArray([1, 2, 10]);это свежесозданная функция, которая для любого аргумента возвращает true/false — есть ли это же значение в массиве [1, 2, 10]