Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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 获取完整页面而不仅仅是Ajax响应片段_Javascript_Php_Jquery_Ajax_Address Bar - Fatal编程技术网

Javascript 获取完整页面而不仅仅是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在地

我正在开发一个web应用程序,使用Javascript客户端、Jquery库和PHP服务器端。我广泛使用了AJAX,并且没有对链接元素使用任何
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代码将加载到“body”部分,如果单独打开“/search”页面,它也将加载公共页眉和页脚


    您必须为搜索页面和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。