如何使用JavaScript/Jquery轻松实现屏幕/视图?

如何使用JavaScript/Jquery轻松实现屏幕/视图?,javascript,jquery,jsrender,Javascript,Jquery,Jsrender,我确信我遗漏了一些非常基本的东西,但我刚刚开始加快jQuery和Javascript编程的速度。以前我用PHP做服务器端编程。 我现在正在为HTML5 WebApp创建一个原型,在这里我想拥有不同的屏幕。现在使用PHP非常简单,我只需要使用Smarty之类的服务器端模板就可以了 然而,为了使我的应用程序更像webapp,我想在屏幕之间动态切换,而不必重新加载窗口 我已经研究了几个可能对我的问题有帮助的选项,但我不确定我是否走上了正确的道路 例如,我检查了JsRender、JsViews,甚至是纯

我确信我遗漏了一些非常基本的东西,但我刚刚开始加快jQuery和Javascript编程的速度。以前我用PHP做服务器端编程。 我现在正在为HTML5 WebApp创建一个原型,在这里我想拥有不同的屏幕。现在使用PHP非常简单,我只需要使用Smarty之类的服务器端模板就可以了

然而,为了使我的应用程序更像webapp,我想在屏幕之间动态切换,而不必重新加载窗口

我已经研究了几个可能对我的问题有帮助的选项,但我不确定我是否走上了正确的道路

例如,我检查了JsRender、JsViews,甚至是纯jquery加载命令。 但我不确定的是这些东西是否能让我拥有这样的东西:

标题部分
主要内容
页脚部分(还包含指向我使用的常见JS文件的链接)

我想动态更新主内容部分。目前,我的应用程序只有一个页面,属于该页面的所有自定义逻辑都在一个JS文件中。在这个JS文件中,我使用一个简单的$(function(){…)来加载我的页面,因此每当加载页面时,页面的某些部分都会异步更新。这很好,因为在加载某个页面时,必须加载该页面中的所有块

但是,如果我有一个链接,比如main.html#otherscreen,当我点击该屏幕时,我想更改我的main#u内容,并运行另一个页面加载特定的JS来处理另一个屏幕上的块,而不是第一个页面,该怎么办

我知道我仍然可以使用服务器端模板,并使用AJAX Requirests加载我的页面,但同样,我不确定这是否是正确的方法

你能告诉我吗?:)

谢谢并致以最良好的问候, Bence

签出。使用此功能,您可以动态地将内容加载到页面上的一个div中,我认为这是您想要做的。只需在页面上找到要加载内容的
div
,然后调用

$('#mydiv').load(url, data, function(response){
    //do something once it's done.
});

根据您的评论…

这其实很简单。
.load()
应该替换div中的内容(我认为。如果没有,只需先调用
.empty()
)。当然,你也可以添加一些效果,比如

function changePages(url) {
    $('#mydiv').fadeOut('fast', function() { 
        $(this).load(url, function(response){
            $('#mydiv').fadeIn('fast');
        });
    });
}
要处理URL中的哈希之类的内容,在单击事件中,必须确保首先调用
e.preventDefault()


要在不更改页眉和页脚的情况下将数据动态加载到页面中,您应该使用jQuery的AJAX功能。它允许您向服务器发送请求,并在不重新加载页面的情况下接收数据。简单示例如下:

<html>
    <head>
        <title>Example</title>
        <!-- Assuming jQuery is already referenced -->
        <script type="text/javascript">
            $('span.buttonish').click(function(){
                $.ajax({
                    // The URL can be a file or a PHP script of your choosing
                    // it can also be pure HTML without the <html> tags as they
                    // are already in your file
                    url: 'path/to/the/file/that/return/data',
                    success: function(receivedData) {
                        // The received data is the content of the file or the return
                        // data of the script and you can use it as you would with any data
                        $('#content').html(receivedData);
                    }
                });
            });
        </script>
    </head>
    <body>
        <div id="header">
        <!-- Something -->
        </div>
        <div id="content">
            <span class="buttonish">Click me to change the text... </span>
        </div>
        </div id="footer">
        <!-- Something -->
        </div>
    </body>
<html>

例子
$('span.buttonish')。单击(函数(){
$.ajax({
//URL可以是您选择的文件或PHP脚本
//它也可以是纯HTML,没有标签
//已经在你的文件中
url:'path/to/the/file/that/return/data',
成功:功能(接收数据){
//接收到的数据是文件或返回的内容
//脚本的数据,您可以像处理任何数据一样使用它
$('#content').html(receivedData);
}
});
});
单击我以更改文本。。。

谢谢!这也是我研究过的问题,但我仍然缺少一些难题,即如何实现页面之间的转换,以及如何仅根据URL中的哈希值以不同方式处理不同的页面(就像我有两个页面:main.html#mainpage和main.html#otherpage。我只想有一个html页面,它会动态加载不同的页面,它会分别处理属于每个页面的块。非常感谢!这现在是有意义的!我的最后一个问题是,你是否认为这种方法是有效的?(我的意思是,我用这种方法实现了一个多页面(多屏幕)Web应用程序)。SEO不是一个问题,因为应用程序不会在一个可公开访问的URL上运行。问题是这种方法是否对性能有好处,还是出于其他原因。这种方法没有任何问题。下面是一个关于如何使用这种技术的完整演示:
<html>
    <head>
        <title>Example</title>
        <!-- Assuming jQuery is already referenced -->
        <script type="text/javascript">
            $('span.buttonish').click(function(){
                $.ajax({
                    // The URL can be a file or a PHP script of your choosing
                    // it can also be pure HTML without the <html> tags as they
                    // are already in your file
                    url: 'path/to/the/file/that/return/data',
                    success: function(receivedData) {
                        // The received data is the content of the file or the return
                        // data of the script and you can use it as you would with any data
                        $('#content').html(receivedData);
                    }
                });
            });
        </script>
    </head>
    <body>
        <div id="header">
        <!-- Something -->
        </div>
        <div id="content">
            <span class="buttonish">Click me to change the text... </span>
        </div>
        </div id="footer">
        <!-- Something -->
        </div>
    </body>
<html>