2015-09-14 69 views
0

有人可以解释一步一步的过程中的AJAX页面转换吗?我已经看到很多解释,但我似乎无法找到一步一步解释它。 我似乎无法理解这个概念。也许像下面的代码?甚至任何简单的工作也可以实现。AJAX + css页面转换

基本上,我想显示一个新的页面,当我点击我的导航菜单链接,而不必重新加载页面。并可能为此添加动画。

此外,添加“错误”调用的意义是什么,它是强制性的?

$(document).ready(function() { 

    $("#pages-load-area #pages-container").load("./pages/" + initialPage); 

    $("#header-navigation a").on("click", function() { 

     var urlPageName = $(this).attr("href"); 

     $.ajax({ 
      type: "GET", 
      url: "./pages/" + urlPageName, 
      processData: false, 
      crossDomain: true, 
      cache: false, 
      success: function(result, responseData) { 
       $("#pages-load-area #pages-container").html(result); 
      }, 
      error: function(responseData, textStatus, errorThrown) { 
       alert('AJAX failed'); 
      }, 
     }); 

     return false; 

    }); 
}); 
+0

此外,什么是“返回false”? –

+0

您是否正在寻找在解释寓意如何,同时更好地理解为AJ解决方案解决ax内容调用/更新单页面应用程序?或者,你问的是如何在你自己的个人网站中将jQuery ajax应用于webapp之类的页面功能? –

+0

就在AJAX数组作为IN-“类型”,“URL”,“过程数据” ....高达“错误”内部的功能。 这些功能在做什么?这是一个Ajax的标准格式,这将不适用于所有的参数? –

回答

2

AJAX不做“页面转换”。它对服务器执行异步调用并运行返回函数或错误函数。 返回函数有一个参数,服务器可以向客户端发送一些数据。有了这些数据,你可以做任何你想做的事情。

如果服务器发送下一页并获得了该结果,并且用结果替换了某些html,则可以使用此功能执行“页面转换”。但为了让你了解发生了什么,保持概念分离是非常重要的。

所以,如果你发送一个Ajax请求是这样的:

$.ajax({ 
     type: "GET", 
     url: "./pages/sum", 
     data: { 
      a: 3, 
      b: 4 
     }, 
     success: function(result) { 
      alert(result); 
     }, 
     error: function() { 
      alert('AJAX failed'); 
     }, 
    }); 

服务器用 '7' 响应。然后,您的警报将显示7.“数据”中显示的变量将从服务器中的GET范围提供。我不知道你正在使用哪种服务器语言。在PHP中,将在$ _GET。一个PHP页面,将返回的

例 '7':

<?php 
    return $_GET['a'] + $_GET['b']; 
?> 

又如:

$.ajax({ 
     type: "GET", 
     url: "./pages/sum", 
     data: { 
      a: 3, 
      b: 4 
     }, 
     success: function(result) { 
      $("input#result").text(result); 
     }, 
     error: function() { 
      alert('AJAX failed'); 
     }, 
    }); 

现在一旦调用返回的命名输入 “结果” 显示 '7' 内的。

现在回到你的情况,你可以做url: "./pages/" + urlPageName,但你也可以使用: :

$.ajax({ 
     type: "GET", 
     url: "./pages", 
     data: { 
      pageName: urlPageName 
     }, 
     success: function(result, responseData) { 
      $("#pages-load-area #pages-container").html(result); 
     }, 
     error: function(responseData, textStatus, errorThrown) { 
      alert('AJAX failed'); 
     }, 
    }); 

取决于你所使用的服务器技术,这可能使您的生活更轻松。因此,在这种情况下,你只需通过任何服务器返回给你替换HTML里面的“#页负荷区域#页容器”元素。

还有一两件事,在这一点上,你并不需要:

processData: false, 
crossDomain: true, 
cache: false, 

他们忘了,现在,回到它们时,你有你的主意Ajax调用更加清晰。

关于“返回false”,如果你从jQuery的文档阅读this页面,您可能会注意到此相关的部分:

从事件处理程序返回false将自动调用 event.stopPropagation()和事件。preventDefault()方法”

这意味着,如果你有说,一个div里面一个按钮,您可以设置与return false结束事件的功能按钮和股利onclick事件onclick事件,当你点击该按钮的div的onclick事件不会的,因为假被解雇。所以,你将有只有一个onclick事件。

我希望我已经澄清。随意问更多,如果它目前尚不清楚。

+0

谢谢!这非常有帮助。我不明白的唯一部分是,在前两个例子中,你暗示如果你提供“data-a = 3,b = 4”并发送一个Ajax调用,那么输出将是7.所以你说结果函数定义为“a + b”或“3 + 4”。但我看不出你在哪里定义。 –

+0

不客气。我也可以看到你在这里是新的,所以如果你认为我的答案是有帮助的,你可以放弃它。如果你认为它解决了你的问题或是给出的最佳答案,那么你可以接受它(我的意思是点击下面的选中标记上/下选项按钮。:)欢迎来到Stackoverflow。 –

+0

不,我不是说结果会是7.我说的是,如果你提供服务器a = 3,b = 4并且服务器返回7然后你的警报将显示7.服务器发送的方式没有显示7。我可以创建一个服务器的例子,但是你没有说你使用的是什么服务器端语言,所以我可以用你不懂的语言来举个例子。 –