2011-04-06 60 views
0

我使用$ .post将表单发布到服务器。服务器然后返回一个html页面。我想用服务器返回的内容替换当前页面内容。我将如何使用jQuery来做到这一点?

到目前为止的代码:

$('.autosave').click(function(){ 
    var url = 'post form url'; 

    $postData = $('#page-form').serialize(); 

    $.post(url, $postData, function(data){ 
      PAGE SOURCE = data 
    }); 

    return false; 
}); 
+0

整个页面? – fabrik 2011-04-06 13:24:33

+0

更改整个html的目的是什么,将页面重定向到您的服务器代码生成的所需页面是不是一样? – Headshota 2011-04-06 13:28:05

+0

你为什么要这样做?使用正常形式。 XmlHttpRequest的_entire point_允许你做_not this_。 – 2011-04-06 13:36:25

回答

0

你可能不应该更换整个页面的内容,而是一个容器。无论如何,代码:

$.post(url, $postData, function(response) 
{ 
    // this works for any valid css selector, so "body" 
    // and ".class_name" works too 
    $('#container').html(response); 
}); 
2

在最简单的...

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

假设响应正是你要替换的东西,你想要的文件中全部替换身体。

0

要更换与给定的HTML您可以从内容使用.replaceWith()

假设你的div是类 “为myContent”,

$(".myContent").replaceWith(data); 

希望这有助于。

0

您可以替换页面中的html元素,但不是整个html。想象一下,如果你重新安装你的操作系统。

顺便说一句,如果你想你的数据插入到<div id="item">,你可以这样做:

$.post(url, $postData, function(data){ 
    $('#item').html(data); 
}); 
+0

确定你可以。 '$('html')。html(data)'会这样做 – 2011-04-06 13:52:12

+0

@Jules如果你能做点什么并不意味着你可以做到这一点。 :) – fabrik 2011-04-06 13:54:43

+0

显然我不是很熟悉罐头和罐头之间的区别:)我只是说你可以。虽然你说'你可以替换元素,但[你可以]不能[替换]整个html'。所以说你不能,那是否会和你一样? – 2011-04-06 14:04:21

1

只需使用.load()

$('.autosave').click(function(){ 
    $('#result').load('ajax/test.html #container');  
    return false; 
}); 
0

可以actualy使用$("html").load(url+"?"+$postData); 代替

$.post(url, $postData, function(data){ 
     $("html").html(data); 
}); 

这也会改变你的页面标题和其他内容在你的head标签中。请注意,虽然您的加载的script标签不会在DOM后可访问