Javascript 如何用ajax响应替换整个html网页?

Javascript 如何用ajax响应替换整个html网页?,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,在讨论具体问题之前,我需要解释几个基本步骤 首先,该应用程序处理客户在线预约的管理 客户在填写美容中心的治疗方案并提供信息后,进入确认页面 现在,本页将执行一个ajax请求,将约会存储在数据库中 如果一切顺利,将显示一个页面,其中包含约会的详细信息,并显示成功消息 问题在于该页面当前仅显示在响应中,即在选项卡网络控制台浏览器中 因此,我的问题很简单:如何用响应中显示的实际结构替换html页面的整个结构? 我在网上发现了很多问题,甚至在StackOverflow上。但所有这些都局限于对div的追加

在讨论具体问题之前,我需要解释几个基本步骤

首先,该应用程序处理客户在线预约的管理

客户在填写美容中心的治疗方案并提供信息后,进入确认页面

现在,本页将执行一个ajax请求,将约会存储在数据库中

如果一切顺利,将显示一个页面,其中包含约会的详细信息,并显示成功消息

问题在于该页面当前仅显示在响应中,即在选项卡网络控制台浏览器中

因此,我的问题很简单:
如何用响应中显示的实际结构替换html页面的整个结构?

我在网上发现了很多问题,甚至在StackOverflow上。但所有这些都局限于对div的追加。我不需要挂起,但也需要替换
,即如何重写html页面。我不知道怎么做,我需要你的建议

为了完整起见,以下是返回给我的代码ajax响应html:

       $.ajax({
          'type': 'POST',
          'url': 'backend_api/ajax_save_appointment',
          'data': postData,
          'success': function(response)
           {
               console.log(response);
           },
           'error': function(jqXHR, textStatus, errorThrown)
           {
               console.log('Error on saving appointment:', jqXHR, textStatus, errorThrown);    
           }
       });

如果响应是html内容,则可以使用以下代码行:

...
'success': function(response)
       {
           $("body").html(response);
       }
...
更新:

这将很难替换html标记,但您可以做什么:

...
'success': function(response)
       {
           $("html").html($("html", response).html());
       }
...

如果响应包含
标记,则使用jquery解析响应,获取html内容并替换当前html的内容:

$(“html”).html(响应)

如果不是,并且只是内容,则执行以下操作:


$(“body”).html(响应)

此问题已在此处处理:

基本上,您可以尝试(我的坏消息,这不适用于IE):

或者,因为您使用的是jquery

$("body").html(data);

关于

也许您可以在“成功”函数中使用以下代码重定向到其他路径。
window.location.href=''

@JudgeProhet在我看来,您不需要AJAX请求。这样做没有好处。如果更新整个页面,则可以通过普通HTTP请求完成。如果您想使用AJAX,只需使用JavaScript重定向到包含约会详细信息的新页面即可

$.ajax({
   'type': 'POST',
   'url': '/backend/ajax_save_appointment',
   'data': postData,
   'success': function(response)
   {
      console.log(response);
      // redirect browser to new location
      window.location.href = '/backend/appointment_details';
   },
   'error': function(xhr, status, error)
   {
      console.log('Error on saving appointment:', xhr, status, error);
      // display error message to the user
   }
});

我没有足够的代表留下评论(!!),但@fribu smart solutions()的更新答案应标记为正确答案,使用:

$("html").html($("html", response).html());
这将通过ajax完全取代页面。这项工作做得很好,而其他人即使使用
“html”
也不能完全工作


我知道这是一篇老文章,但它解决了我在同一问题上的问题!:)

多快啊!问题解决了,非常感谢我祝你一天愉快!:)@Dillinger很乐意帮助您如果您要替换整个页面,请不要使用AJAX!只需
POST
将数据直接发送到服务器,并让浏览器呈现整个替换页面。我知道这一点,但在这种情况下,我不得不使用ajax。确切地说,强制方式是什么?假设您有一个每小时刷新一次的页面,这里的解释太长了。但它偶尔也会从重新启动中刷新服务器(存在其他程序员,他们会重新启动服务器,这种情况经常发生)。但是如果刷新页面在重新启动期间尝试刷新。。。失败。现在您有一个404死页,当您返回时必须手动刷新该页。但是:如果改用AJAX刷新器,可以在失败时挂上黄色横幅,并将刷新时间安排在未来10分钟(重启后)。不再关注页面。永远忽略它。是的,html标签包括在我说的,谢谢!祝你一天愉快:)那么你的回答是<代码>……
?如果是这样,那么就用第一个,而不是我的第二个(和弗里布的例子)。使用第二个标签时,您要做的是将html标签放在body标签中。这仅适用于您的回复确实是整页的情况。@Dillinger不清楚新加载的内容将使用什么(如果有)脚本。请考虑我上面的评论,避免使用Ajax。公平点,虽然OP要求只替换页面。因此,我假设该页面不包含任何脚本(可能只是纯文本?。@LJa如果它不包含任何脚本,下一页将如何工作?如果您阅读了注释,您会看到注释说这在IE上不起作用,并导致在ChromeI中附加(而不是替换)新内容。。但第二个命题仍然有效。这对我来说就像我能够用Ajax替换完整的HTML一样,j-query其他功能也可以毫无问题地工作……如果您的文档包含javascript和document ready event,那么jquery与javascript的执行方式是不同的,它将作为真正的新页面启动的唯一方法是使用document.write(newContent)方法!你能给我们的研究增加一个代码样本吗?
$("html").html($("html", response).html());