Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript或php-更新最有效的方法是什么?_Php_Javascript_Ajax - Fatal编程技术网

javascript或php-更新最有效的方法是什么?

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

我在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?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&amp;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响应程序。