Я работаю над приложением NodeJS/ExpressJS с помощью JQuery Mobile (JQM). У меня возникли проблемы с перенаправлением с сервера. Мое приложение динамически генерирует кнопкиNodeJS Перенаправление с одной страницей JQuery Mobile
<button class=\"setAttndingbtn btn btn-primary\" value=\"" + curr.place_id + "\">Attending: " + numAttending.numAttnd + " people are going</button>
после поиска $ .getJSON производится. Использование обещаний/SetTimeout, следующий обработчик присоединяется ко всем кнопкам:
$('.setAttndingbtn').click(function(){
var buttonsir = $(this); //Store this button reference
if($(this).html().slice(0,1) == 'A'){ //Check the button's state
$.getJSON('/api/attending/' + $(this).val(), function(data){ //Ajax
$(buttonsir).text("You are attending! " + data.numAttnd + " people are going"); //Change state
});
} else {
$.getJSON('/api/attending/rmv/' + $(this).val(), function(data){
$(buttonsir).text("Attending: " + data.numAttnd + " people are going");
});
}
});
Соответствующие маршруты здесь:
function isLoggedIn(req, res, next){
if(req.isAuthenticated()){
return next();
} else {
res.redirect('/login');
}
}
app.route('/login')
.get(function(req, res){
res.sendFile(p + "/public/login.html");
});
app.route('/api/attending/:number')
.get(isLoggedIn, searchServerInstance.setAttending);
На внутреннем интерфейсе, когда «придет» кнопка нажата, я хочу проверьте, зарегистрирован ли пользователь, а если нет, перенаправляйте их на страницу входа в систему. Когда я запускаю код как есть, в Firefox Firebug консоли, я вижу запрос GET, и если я его разворачиваю, в разделе «Ответ» отображается код HTML на мою страницу входа. Но страница фактически не загружает файл.
У моего /login.html есть <div data-role="page">
, заголовки и теги контента, как рекомендует JQM. Я попытался включить всю страницу входа в мой /index.html, но попытка использовать res.redirect("/public/index.html#page2")
приводит к «файлу, который не найден».
Можно ли использовать узел/экспресс, чтобы сообщить JQM, который загружается <div data-role="page" id="page1">
? Есть ли способ заставить JQM загружать /login.html с серверной стороны, способ rel="external"
позволяет? Или мне придется вырезать JQM?
Как насчет прямой отправки файла в раздел else, где делаются перенаправления. Пожалуйста, проверьте. –
@GandalftheWhite Я просто попробовал 'isLoggedIn() {...} else {res.sendFile (p +' /public/login.html ')} и имел ту же проблему, консоль показывает файл HTML, как в ответе GET , но страница не загружает его. –
Так что я догадался xD. Что вы используете в передней части? –