我在我的代码中正在做一个ajax帖子,
$.post("myAction",$("#myForm").serialize(),
function(response) {alert(response);});
如果我的回复是来自我的控制器的错误消息,我想不是在警告框中显示它,而是在常规浏览器页面中显示。我怎么能这样做?
感谢。
答案 0 :(得分:4)
您可以根据响应重定向到错误页面,例如:
$.post("myAction",$("#myForm").serialize(),
function(response) {
alert(response);
if(response == 'Error') {
window.location.href = '/MyErrorPage.html';
}
});
或者您可以使用响应替换当前页面的内容,例如:
$('body').html(response);
答案 1 :(得分:4)
最好使用$ .ajax方法,因为您可以更好地处理错误消息(例如,如果服务器返回404错误或类似的错误)。 你可以这样使用:
$.ajax({
type: "POST",
url: "page.php",
dataType: "text",
success: function(xhr) {
if(xhr == 'error') {
window.location.href = '/MyErrorPage.html';
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
window.location.href = '/MyErrorPage.html';
}
});
答案 2 :(得分:1)
如果您要显示返回值,可能会使用户感到困惑,因为他们会期望事情比简单的“错误”更加贬值。
我认为Karim79有一个正确的方法,但它太复杂了,因为你必须设计一个完整的新页面,只是为了处理错误。
我建议您在页面本身设置自己的错误处理功能,并根据响应显示人类可读的消息。
它可能看起来像这样
$.post("myAction",$("#myForm").serialize(),
function(response) {
alert(response);
if(response == 'Error') {
$('#errorMsg").html("Could not get results from server. Please try again later.");
}
});
答案 3 :(得分:0)
您可能会尝试将回调附加到ajaxError-event handler:
$.ajaxError(
function (event, XMLHttpRequest, ajaxOptions, thrownError) {
window.location = '/error.html'
});
答案 4 :(得分:0)
除了上面给出的建议,你可以使用Jquery Form插件来处理你所有的ajax表单需求。