我需要从响应重定向到一个页面。我做了一个ajax调用,可以处理成功。有回复的html页面,但如何将其重定向到该页面。
这是我的代码。
$("#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;
}
});
});
答案 0 :(得分:3)
请试一试。
var newDoc = document.open("text/html", "replace");
newDoc.write(response.responseText);
newDoc.close();
答案 1 :(得分:3)
不使用ajax会使这更容易:
<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>
如果你真的想使用ajax,你应该生成一个独特的服务器响应,只包含你想在页面中更新的HTML部分或实际的JSON。
如果你坚持使用你目前得到的回复,处理它的适当方式是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");
}
});
答案 2 :(得分:1)
您的回复是一个对象,其中包含responseText
属性中页面的完整HTML。
您可以$(body).html(response.responseText);
而不是window.location.href = ...;
覆盖当前页面内容,并附上您的回复。
...
complete : function(response) {
$(body).html(response.responseText);
}
但我建议你不要,并且可能存在风格和其他与页面上已有的冲突。
答案 3 :(得分:0)
在您的HTML中添加ID为“内容”的div,类似这样的
<div id='content'/>
由于您的响应是完整函数中的html,因此将内容添加到div中 -
complete : function(response) {
$('#content').append(response.responseText);
}
如果您仍然遇到问题,请告诉我。
答案 4 :(得分:-2)
试试这个
$("#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;
}
});
});