У меня проблема с моим текущим веб-приложением. Действительно, когда я поставил текущую ссылку: https://localhost:44311/#shop, моя страница отображалась отлично. Вот картинка:
Но затем, когда я пытаюсь изменить свой URL-адрес на: https://localhost:44311/#/, чтобы проверить управление перенаправлением, контент отображается в том же контенте, вот картина того, что произошло:
В настоящее время все мои вызовы ajax вызываются снова и снова и снова (бесконечный цикл).
Я пытаюсь добавить контрольное регулярное выражение для #/ и стараюсь уважать #/xxxx/xxxxx. Но безуспешно. Если вы можете помочь мне, это может быть очень приятно! Вот мой JS, где я управляю страницами загрузки:
var ui = {
controller: {
page: {}
},
component: {
category: null
}
};
ui.controller.pageLoad = function (hash = null) {
if (hash === null) {
hash = window.location.hash;
if (hash.length < 2 || hash[0] !== "#") {
hash = "/shop";
}
} else if (hash.length < 2 || hash[0] === "#" && hash[1] === '/') { // add control regex for #/, must respect #/xxxx/xxxxx
hash = "/shop";
}
$.get(hash.substring(1), function (data) {
ui.controller.page = null;
$("#content").html(data);
}).fail(function (error) {
$.get("/Home/Error?status = " + error.status, function (data) {
ui.controller.page = null;
$("#content").html(data);
});
});
};
Вы можете создать функцию isValidHash
и использовать ее в своем выражении if
:
function isValidHash(hash) {
return typeof hash === "string" && /^#(/[a-z0-9-]+)+$/.test(hash);
}
function test(v) {
console.info(`'${v}' is ${isValidHash(v) ? '' : 'NOT '}valid`);
}
test(null); // NO - not a string
test('#'); // NO - too short
test('#shop'); // NO - no slash
test('#/shop'); // YES
test('#/shop/item-9'); // YES
Конечно, вы можете пойти сюда, увидеть это регулярное выражение в действии, и справа вы найдете объяснение всего в этом регулярном выражении.
О да спасибо работает. У вас есть ссылка, чтобы поделиться со мной, сэр, о регулярном выражении? Я еще новичок ахах. Еще раз спасибо!