2009-02-09 74 views
3

我有一个JavaScript文件几种更新方法,用于更新我的Ajax应用程序,就像这样:javascript或php - 什么是最有效的更新?

function updateByPk(layer, pk) { 
    url = "get_auction.php?cmd=GetAuctionData&pk="+pk+"&sid="+Math.random(); 
    update(layer, url); 
} 


function updateByQuery(layer, query) { 
    url = "get_records.php?cmd=GetRecordSet&query="+query+"&sid="+Math.random(); 
    update(layer, url); 
} 

function updateByPage(layer, query, pg) { 
    url = "get_records.php?cmd=GetRecordSet&query="+query+"&pg="+pg+"&sid="+Math.random(); 
    update(layer, url); 
} 

我想知道它是否会更有效严格通过PHP做的事情像分页和这样的,只是通过重新加载页面,而不是使用ajax方法。我不确定哪种方法更有效率,或者每种方法是否有优缺点。

+0

这不是javascript中的分页,您只需加载一个php页面。 update()做什么? – 2009-02-09 22:19:33

回答

1

如果我得到这个问题,那么你是问分页和类似的问题是更好的通过Javascript + AJAX完成,还是通过调用服务器来完成?

我个人认为只是使用请求到服务器。 AJAX在这种情况下是不相关的,除了“bling”因素(是的,这是一个技术术语:P)

如果您正在为应用程序正确编写应用程序,并且需要编写“直接调用服务器“位(当某人关闭Javascript并点击其中一个”下一页“链接时)。

有Javascript意味着1)你有额外的代码来维护。 2)你打破后退按钮。如果您只实现AJAX方法,那么您无法访问其他页面上的数据。如果你喜欢,你还没有简单的方法链接到它(通过复制地址栏)。

我个人只会使用AJAX来为页面添加功能,而不需要使用任何其他功能,例如,检查填写注册表单时是否需要输入用户名。自动建议等。

1

Ajax在客户端和服务器上会更容易。客户端不会有滚动重置,也不必检查样式表和图像等所有新资产,并且可以更快地加载内容。服务器不必使用页眉和页脚生成整个页面;它只需要生成更改页面的一部分。

不利的一面是,使用良好的用户界面(添加加载微调器和相关的装饰物)编写起来有点困难。如果客户端已禁用JavaScript,则会导致页面中断。所以真的,如果你做ajax的话,你都需要这两者。尽管如此,在Ajax的优雅降级中编码很容易。

<a href="/search?term=foo&amp;page2" onclick="loadPageViaAjax(2); return false"> 
    Next 
</a> 

这是一个链接的例子,即使没有javascript也可以工作。如果javascript处于启用状态,触发onclick,则会发生ajax,并停止与return false之间的链接。如果没有JavaScript,则忽略onclick,并且正常地遵循链接。

+0

我没有问题使用调用服务器做分页,因为我更喜欢你描述的优点。我的问题是,我不知道在这种情况下是否可能。 – 2009-02-12 21:28:25

+0

我有一个文件,index.php与3层,默认情况下只有导航。每个导航链接都是一个查询,通过ajax将记录列表加载到第二个图层中,并且该图层中的链接将内容加载到最终内容图层中。 – 2009-02-12 21:28:56

2

与寻呼AJAX优点:

  • 潜在少发送的数据,这意味着更快的页面加载和更少的带宽使用。
  • 流畅的用户体验

寻呼没有AJAX的优势:

  • 后退和前进按钮将在浏览器中运行
  • 你可以有一个特定的页面的URL(尽管你可以做到这一点与AJAX也与页面。PHP#编号和副招)
  • 也许更容易一点编写和维护
0

这取决于你的效率的定义。通过AJAX加载新内容将减少通过网络传输的字节数,但如果您无法将动态内容缓存到静态文件(我假设您将在重新加载页面时),则服务器上的字节数可能会更加剧烈。但是,过多地依赖AJAX可能会导致您的页面对于浏览器不支持JavaScript(它们存在)的用户而言更不易访问,并且可能会损害您的网站被搜索引擎编入索引的功能。两种情况中最好的方法是让链接指向重新加载的页面,但用JavaScript重写该行为以通过AJAX加载新内容。

相关问题