2011-04-06 2 views
0

J'utilise $ .post pour publier un formulaire sur le serveur. Le serveur renvoie ensuite une page HTML. Je veux remplacer le contenu de la page actuelle par ce qui est renvoyé par le serveur. Comment ferais-je cela en utilisant jquery?

Code à ce jour:

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

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

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

    return false; 
}); 
+0

La page entière? – fabrik

+0

quel est le but de changer html entier, n'est-ce pas la même chose pour rediriger la page à la page désirée générée par votre code serveur? – Headshota

+0

Pourquoi diable feriez-vous cela? Utilisez un formulaire normal. Le point_entire_ de XmlHttpRequest est de vous permettre de faire _not this_. –

Répondre

0

Vous ne devriez probablement pas remplacer le contenu de toute la page, mais plutôt un conteneur. Peu importe, le code est:

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

Au niveau le plus simple ...

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

En supposant que la réponse est exactement ce que vous voulez remplacer par, et que vous souhaitez remplacer tout dans le document corps.

0

Pour remplacer le contenu d'un HTML donné, vous pouvez utilise .replaceWith()

En supposant que votre div est avec classe "myCONTENT",

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

Hope this helps.

0

Vous pouvez remplacer les éléments html dans votre page, mais pas tout le code HTML. Imaginez si vous réinstallez votre système d'exploitation à la volée.

BTW si vous souhaitez insérer vos données dans <div id="item">, vous pouvez le faire:

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

que vous pouvez. '$ ('html'). html (data)' fera cela –

+0

@Jules si vous pouvez faire quelque chose ne veut pas dire que vous pourriez le faire. :) – fabrik

+0

apparemment je ne suis pas très familier avec la différence entre pourrait et peut :) je dis juste que vous pouvez. alors que vous dites 'vous pouvez remplacer les éléments mais [vous ne pouvez] pas [remplacer] tout le code HTML'. en disant que vous ne pouvez pas, serait-ce la même chose que vous pourriez? –

1

Utilisez simplement .load()

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

vous pouvez actuellement utiliser $("html").load(url+"?"+$postData); au lieu de

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

ceci changera également votre titre de page et tout autre contenu à l'intérieur de vos étiquettes head. Sachez cependant que vos balises chargées script ne seront plus accessibles dans DOM par la suite

Questions connexes