我有一个jQuery ajax函数,在调用失败时用HTML响应.如果调用成功,则以JSON响应:{"result":true}
$.ajax({
type: 'POST',
dataType: 'html',
success: function (response) {
if (response.RESULT === true) {
window.location.replace(baseUrl);
} // else do something else and show errors
}
});
Run Code Online (Sandbox Code Playgroud)
但是,Firefox不会识别JSON中的结果,因为dataType设置为'html'.我试着把它留空,这没用.是否有工作,或者返回两件事是不是很糟糕?
这是注册表格.我正在返回HTML,因为它更容易显示用户验证(服务器端)错误,而如果注册成功,我会重定向它们.
返回两种不同格式的数据是不好的做法.该服务的消费者将不知道会发生什么,并且在相关的服务组中改变格式也是不好的做法(尽管一些特殊情况证明了这一点)
在你的情况下:
你可以做的是一直返回JSON,并且在错误的情况下以这种格式返回JSON:
{
"errorsHtml" : "<div class='errors'>...</div>"
}
Run Code Online (Sandbox Code Playgroud)
您还可以利用HTTP状态代码标头来表示服务器的状态,例如状态500是服务器内部错误.您可以处理不同的状态代码,如下所示:
$.ajax({
statusCode: {
404: function() {
alert('page not found');
}
}
});
Run Code Online (Sandbox Code Playgroud)