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; } }); });