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]