Javascript 获取完整页面而不仅仅是Ajax响应片段
我正在开发一个web应用程序,使用Javascript客户端、Jquery库和PHP服务器端。我广泛使用了AJAX,并且没有对链接元素使用任何Javascript 获取完整页面而不仅仅是Ajax响应片段,javascript,php,jquery,ajax,address-bar,Javascript,Php,Jquery,Ajax,Address Bar,我正在开发一个web应用程序,使用Javascript客户端、Jquery库和PHP服务器端。我广泛使用了AJAX,并且没有对链接元素使用任何href属性。只有主页从零开始加载。其他的由AJAX调用请求,AJAX响应被放入主页,例如使用Jquery.html()函数来显示新页面 问题是当我运行http://sani.com/index.php,我将进入主页。如果我点击搜索按钮,我会得到http://sani.com/search第页。但是如果我运行http://sani.com/search在地
href
属性。只有主页从零开始加载。其他的由AJAX调用请求,AJAX响应被放入主页,例如使用Jquery.html()
函数来显示新页面
问题是当我运行http://sani.com/index.php
,我将进入主页。如果我点击搜索按钮,我会得到http://sani.com/search
第页。但是如果我运行http://sani.com/search
在地址栏上,我只得到AJAX响应,因此将内容放在主页中,而不是整个http://sani.com/search
第页
如何获得完整的
http://sani.com/search
page当我在地址栏上运行此url时?我做错了什么?简单点。只需添加另一个将返回搜索html的路由。
例如:
/搜索-将返回整个呈现的搜索页面。
/getSearchHtml-将返回您需要的唯一html片段
它将帮助您避免路线上的混乱。只需将索引页分成三页即可
- header.php
- content.php
- footer.php
<?php
include_once 'header.php';
include_once 'content.php';
include_once 'footer.php';
?>
并在搜索页面上执行相同的操作,并将页眉和页脚页面置于条件中
<?php
if(empty($_GET['htmlOnly'])) include_once 'header.php';
include_once 'content.php';
if(empty($_GET['htmlOnly'])) include_once 'footer.php';
?>
现在,您的ajax URL将httt://abc.com/search?htmlOnly=1 它将只加载内容部分
没有
“htmlOnly=1”httt://abc.com/search 将加载整个HTML页面。您可以使用带有
您必须为搜索页面和ajax文件指定单独的名称,因为ajax代码只是“/search”页面的一部分,如果您想单独访问它,您需要使用公共布局,这将是整个页面的组合 因此,默认情况下,除非请求frontpage,否则只返回HTML片段?您应该能够在服务器端(在.php代码中)检测请求是否是使用AJAX发出的。如果是这样,请返回一段HTML,否则返回整个页面。@HaukurHaf这可能是一个很好的解决方案,但如何检查是否是ajax请求而不存在欺骗问题?这是唯一的解决办法吗?或者我遗漏了什么?如果您能先向我展示如何使用代码或文本处理链接,我会为您编写一个完整的方法。但是如果我在/getSearchHtml页面上单击“刷新浏览器”按钮,我也会遇到同样的问题。@Ricla:问题是如果用户需要搜索页面,他们会转到/search。如果AJAX需要搜索页面,它可以使用/getSearchHtml,或者/get/search可能是一个更好的主意。问题是这不是一个可扩展的解决方案-问题将出现在每个页面上,而不仅仅是搜索。@CJxD是的,它不是一个可扩展的解决方案。此外,如果用户在AJAX请求之后刷新页面(在本例中,url为/getSearchHtml),则只会得到AJAX响应。相反,我应该获得整个页面。这里可能不需要
include\u once
,因此考虑到它对性能的影响,应该将其替换为include
。在这种情况下,如果我刷新httt://abc.com/search?htmlOnly=1 page,我只从服务器得到AJAX响应,所以我也有同样的问题。而且,如果我在同一个页面中加载了超过1个内容,就很难处理。@Ricla让您的AJAX调用添加GET参数。页面上的链接只需要包含/search@CJxD是的,AJAX调用add-GET参数。在我的html中没有href属性,我的主页已经分为页眉、正文和页脚。正文包含其他div。AJAX响应可以替换其中一个div或body。