2011-04-06 27 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後可訪問