javascript或php-更新最有效的方法是什么?
我在javascript文件中有几种更新方法,用于更新ajax应用程序,如下所示:javascript或php-更新最有效的方法是什么?,php,javascript,ajax,Php,Javascript,Ajax,我在javascript文件中有几种更新方法,用于更新ajax应用程序,如下所示: 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
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方法,是否会更有效。我不确定哪种方法更有效,或者每种方法都有优点和缺点。如果我得到了这个问题,那么您会问,分页和类似的操作是通过Javascript+AJAX完成还是通过调用服务器来完成更好 我个人认为,只需使用对服务器的请求即可。AJAX在这种情况下是不成功的,除了“bling”因素(是的,这是一个技术术语:P) 如果您在编写应用程序时考虑到了可访问性,那么无论如何您都应该编写“直接调用服务器”部分(当有人关闭Javascript并单击您的“下一页”链接时) 有了Javascript意味着1)需要维护额外的代码。2) 你弄坏了后退按钮。如果只实现AJAX方法,则无法访问其他页面上的数据。如果你这样做了,你就没有简单的方法链接到它(通过复制地址栏)
我个人只会使用AJAX来为页面添加功能,而不会删除任何其他功能,例如,在填写注册表时检查是否使用用户名。自动建议等。在客户端和服务器上使用Ajax将更容易。客户端将不会有他们的滚动重置,将不必检查所有新的资产,如样式表和图像,将加载的东西快得多。服务器不必生成带有页眉和页脚的整个页面;它只需要生成页面中更改的部分 缺点是使用好的UI(添加加载微调器和相关的Doodas)编写代码有点困难。如果客户端禁用了javascript,则页面将中断。所以说真的,如果你真的要做ajax的话,你需要两者。不过,为Ajax编写优雅的递减代码很容易
<a href="/search?term=foo&page2" onclick="loadPageViaAjax(2); return false">
Next
</a>
这是一个即使没有javascript也能工作的链接示例。如果javascript处于启用状态,则会触发onclick,ajax发生,并使用
返回false来停止以下链接。如果没有javascript,onclick将被忽略,链接将正常进行。使用AJAX进行分页:
- 传输的数据可能更少,这意味着更快的页面加载和更少的带宽使用
- 更流畅的用户体验
无AJAX优势的分页:
- 后退和前进按钮将在浏览器中工作
- 您可以拥有特定页面的URL(尽管您也可以通过page.php#pagenumber技巧使用AJAX实现这一点)
- 也许更容易编写和维护
这取决于你对效率的定义。通过AJAX加载新内容将减少通过网络传输的字节数,但如果无法将动态内容缓存到静态文件中(我假设在重新加载页面时会这样),那么在服务器上可能会更费力。然而,过度依赖AJAX可能会导致浏览器不支持javascript(javascript是存在的)的用户无法访问您的页面,并可能会损害您的网站被搜索引擎索引的能力。两全其美的方案是让链接指向重新加载的页面,但用javascript覆盖该行为,通过AJAX加载新内容。这不是javascript中的分页,只是加载一个php页面。update()做什么?+1和更多:(AJAX)API基本上是在执行应用程序时完成的,更容易构建外部工具。(PHP)即使没有启用Javascript也能工作(如GoogleBot)。我使用对服务器的调用来进行分页没有问题,因为我更喜欢您描述的优点。我的问题是,我不知道在这种情况下是否可能。我有一个文件,index.php,有3层,默认情况下只有导航。每个导航链接都是一个查询,通过ajax将记录列表加载到第二层,该层中的一个链接将内容加载到最后一个内容层。当我尝试在没有ajax的情况下使用分页时,我无法找到保持网站外观和风格以及加载到第三层的内容的方法。是否可以使用对serer的调用对ajax应用程序进行分页?您的搜索结果页面需要返回两种不同的内容。它应该返回一个完全呈现的页面,或者只返回需要交换的内容。您可以使用一个附加的GET参数来实现这一点。在rails中,您只需设置一个使用不同模板的js响应程序。