Comment rediriger la réponse d'une requête ajax

Je dois rediriger vers une page de la réponse. J'ai fait un appel ajax et je peux gérer le succès. Il y a une page html en réponse, mais comment la rediriger vers cette page.
Voici mon code.

$("#launchId").live('click',function(){ var id= $("#id").val(); var data = 'id='+id; $.ajax({ url: "xyz.json", type: "post", data: data, dataType: 'json', complete : function(response) { window.location.href = response; } }); }); 

Ne pas utiliser ajax rendrait cela plus facile:

 <form type="POST" action="xyz.json"> <label for="id">Enter ID:</label><input id="id" name="id"> <button type="submit" id="launchId">Send</button> </form> 

Si vous souhaitez vraiment utiliser ajax, vous devez générer une réponse distincte au serveur, contenant uniquement les parties HTML que vous souhaitez mettre à jour dans votre page ou JSON réels.

Si vous insistez sur l'utilisation de la réponse que vous obtenez actuellement, la manière appropriée de traiter cela serait document.write :

 $.ajax({ url: "xyz.json", type: "post", data: data, dataType: 'html', // it's no JSON response! success: function(response) { document.write(response); // overwrite current document }, error: function(err) { alert(err+" did happen, please retry"); } }); 

Essayez ceci.

 var newDoc = document.open("text/html", "replace"); newDoc.write(response.responseText); newDoc.close(); 

Votre réponse est un objet contenant le HTML complet d'une page dans la propriété responseText .

Vous pouvez probablement faire $(body).html(response.responseText); Au lieu de window.location.href = ...; Pour écraser le contenu de la page actuelle avec ce que vous avez obtenu une réponse.

 ... complete : function(response) { $(body).html(response.responseText); } 

Mais je vous suggère de ne pas et il pourrait y avoir du style et d'autres conflits avec ce qui est déjà sur la page.

Dans votre HTML, ajoutez une div avec id comme 'contenu', quelque chose comme ça

 <div id='content'/> 

Comme votre réponse est html dans votre fonction complète, ajoutez le contenu dans le div comme ceci –

  complete : function(response) { $('#content').append(response.responseText); } 

Faites-moi savoir si vous rencontrez toujours des problèmes.

essaye ça

 $("#launchId").live('click',function(){ var id= $("#id").val(); var data = 'id='+id; $.ajax({ url: "xyz.json", type: "post", data: data, dataType: 'json', complete : function(response) { window.location.href = '/yourlocation?'+response; } }); });