#node.js #ajax #mongodb #express #ejs
#node.js #ajax #mongodb #экспресс #ejs
Вопрос:
Я создаю форум с использованием Node, Express, EJS и MongoDB. В настоящее время я визуализирую страницу форума и передаю данные из базы данных с использованием Node и EJS. Я использую запросы GET и POST. Как только я добавляю комментарий, страница сохраняется в базе данных, а затем перенаправляется обратно на тот же маршрут. Затем я могу прокрутить вниз и увидеть свой комментарий. Однако меня это не устраивает, и я хочу, чтобы комментарии и ответы обрабатывались Ajax, чтобы, как только я прокомментирую, без обновления я создавал запрос post и снова без обновления страницы я мог загрузить новый комментарий. Есть предложения о том, как я могу воплотить это в жизнь?
Проект доступен для просмотра наhttps://github.com/Ibrahim40021974/Forum . (Извините за неаккуратный код. Я все еще работаю над контролем версий). Все предложения приветствуются! Заранее спасибо.
Ответ №1:
То, чего вы хотите достичь, обычно называется одностраничным приложением, где вы не увидите обновления страницы, но небольшой компонент этой страницы фактически обновлен новыми данными.
Я закончил с использованием Reactjs, Nodejs, что довольно легко сделать в Reactjs. Если вам интересно, я могу поделиться репозиторием.
Изучил ваш проект и несколько вещей, которые я отметил.
- Если я ссылаюсь на правильный (https://github.com/Ibrahim40021974/Forum/blob/master/views/forum.ejs#L69 ) затем вам нужно остановить отправку формы по умолчанию с помощью
e.preventDefault()
. Отправка формы по умолчанию всегда обновляет страницу, которая вам не нужна. Та же операция с формой, которую вы должны выполнить с вызовом ajax.Например.
handleFormSubmit(e) {
e.preventDefault();
// <add your ajax call here>
}
Как только вы это сделаете, посмотрите, работает ли что-то без обновления страницы.
- Посмотрите, поможет ли это вам с тем, как выполнить вызов ajax. https://www.thetopsites.net/article/53326172.shtml
Комментарии:
1. Большое тебе спасибо, Аджай! Я ценю ваш быстрый ответ. Я принял к сведению ваши замечания и работаю над ними. Я был бы рад, если бы вы могли поделиться репозиторием, на который вы ссылались ранее. Еще раз спасибо!
2. @IbrahimKhalil , это репозиторий github.com/ajaysikdar/reactjs-nodejs-gae . Вы также можете воспользоваться помощью этого блога, если это необходимо medium.com/@ajaysikdar /… . Это пример репозитория с одним простым вызовом rest. Это даст вам хороший старт с basic.
3. Большое тебе спасибо, Аджай. Обязательно доведу проект до конца.
Ответ №2:
Как сказал @Ajay kumar, лучший способ — создать одностраничное приложение: такие фреймворки, как react / angular / vue, довольно хороши, когда речь идет об обновлении только части вашей страницы при вставке новых данных.
Тем не менее, вы могли бы сделать это без использования какого-либо из этих фреймворков, но это будет сложно.
Вы можете добавить в свой шаблон ejs логику javascript, которая при отправке вашего комментария будет выполнять следующее :
- Отправьте запрос post для отправки нового комментария
- Отправьте запрос get, чтобы получить комментарий, связанный с этим сообщением, как только завершится запрос post
- обновите DOM (VanillaJS или Jquery), чтобы отобразить список комментариев.
Первый вариант попросит вас изменить архитектуру вашего проекта, но будет проще в управлении, второй даст вам возможность продолжать использовать ejs, но немного сложнее.