【问题标题】:Dynamically updating content of web page without refreshing it?动态更新网页内容而不刷新它?
【发布时间】:2018-12-30 22:45:24
【问题描述】:

我有一个多页面站点,当我选择任何导航链接转到另一个页面时,它每次都会重新加载整个页面。我想我可以使用 AJAX 和 jQuery 来制作 XMLHttpRequest 并为每个页面的 body 标签提供一个目标 ID。

但是,有没有更好的方法来实现这一点?我一直在到处寻找帮助,并使用上述方法从几年前获得了很多东西。

提前感谢您的帮助。

【问题讨论】:

  • 您可以使用套接字或 Ajax,但这些几乎都是您的选择。套接字实际上并不意味着获取静态内容,因此您应该为此使用 Ajax。但是,由于您基本上想要一个 SPA,因此只需开始使用通用框架,如下面的答案所示

标签: javascript html


【解决方案1】:

我认为您想构建一个单页应用程序 (SPA)。

有许多框架可以帮助您构建此类应用程序,例如 Angular、React 等。

【讨论】:

    【解决方案2】:

    您显然可以通过使用 js 框架来实现这一点,这些框架使您能够构建所谓的单页应用程序 (SPA),例如 angular、react、vue....查看 angulars 文档

    https://angular.io/

    【讨论】:

      【解决方案3】:

      Angular 对于您可能需要的东西来说太大了。您可以选择 React,如果您安装并运行 create-react-app,它会为您设置所有(或几乎)。

      https://www.npmjs.com/package/create-react-app

      https://github.com/facebook/create-react-app

      【讨论】:

        【解决方案4】:

        看起来您想创建一个 SPA 或单页应用程序。这对于简单的 HTML、CSS 和 JS 是不可能的。使用 vanilla JavaScript,您可以在不刷新页面的情况下更改页面,但如果不测试大量输入,这将非常简单。

        做你想做的事的最好方法是使用框架。最好的框架是 Angular、React 或 Vue。

        Angular 是一个基于 JavaScript 的 Web 框架,用于创建单页应用程序。虽然它最初是在 JavaScript 上的,但现在随着新版本的出现,他们将其转移到了 TypeScript(一种类似于 JS 的语言,但有一些不同)。

        React 是一个几乎做同样事情的 JS 库,除了它是一个库而不是一个框架。框架是您开发所需的一个完整的东西,但库更像是您可以用来开发一些其他东西的附加工具,而不是自己编写代码,这将花费数百行代码来完成最简单的事情。如果您想了解有关框架与库的更多信息,请点击此处:What is the difference between a framework and a library?

        Vue 是一个用于创建用户界面的 JS 框架。它不是真正的 SPA,但可以对其他一些事情做同样的事情。

        这三个也可以与完整堆栈一起用作后端和您选择的数据库。尽管 MongoDB 是一个非常受欢迎的 Web 开发框架,但它在后端对多种语言提供了广泛的支持。所以现在您可以使用后端的数据库来更新您的页面而无需刷新它。

        这三个框架都非常受一个充满活力的社区的欢迎,可以帮助您在遇到困难时解决问题。你应该对你想要做什么做更多的研究,然后研究这三个框架/库来决定什么符合你的期望,然后继续前进。希望这会有所帮助。

        【讨论】:

          【解决方案5】:

          在框架出现之前的日子里,我们使用将内容保存在框架中并使用每 x 秒刷新一次页面的 javascript。

          看看这个答案:

          An Iframe i need to refresh every 30 seconds (but not the whole page)

          【讨论】:

            【解决方案6】:

            我认为实现它的最佳方法是通过异步调用来提供所需的内容,而无需重新加载整个页面。

            这可以通过 Javascript 或 JQuery 来完成。 JSON 将是您用来来回发送数据的协议,因此您可以使用非常简单的基于 XML 的格式传递参数并从查询中获取结果。

            但是有很多不同的方法可以实现这一点。为了改善您的问题,我建议您点击以下链接:

            [https://stackoverflow.com/help/how-to-ask][1]

            现在,只是为了向您展示一种通用方法,您可以使用 JQuery 调用一个 PHP 页面,该页面将反馈您需要的任何内容。它是这样的:

            var params = {
                "param1" : param1_value,
                "param2" : param2_value,
            };
            
            var url = "page_to_call.php";
            
            $.ajax({
                context : this,
                type    : "POST", 
                url     : url, 
                data    : params, 
                dataType: "json", 
                encode  : true
            })
            .done(function(data){
                console.log(data);
            })
            
            .fail(function(data){   
                console.log(data);
            });
            

            在此调用之后您想要返回的任何内容都可以像这样发回:

            <?php
            
            $return = array();
            
            $return["SOME_DATA"] = "some content here";
            
            echo json_encode($return);
            
            ?>
            

            【讨论】:

              猜你喜欢
              • 2020-07-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-06-10
              • 2016-11-17
              • 1970-01-01
              • 2020-10-09
              相关资源
              最近更新 更多