我制作了一个简单的HTML表单,我想将其发布到FreshDesk(票证应用程序)。表单通过AJAX提交后。我想将用户重定向到一个页面。
如何返回HTTP状态代码并使用它们进行条件化?
var formData = new FormData(document.getElementsByName('fd_feedback_widget')[0]);// yourForm: form selector
$.ajax({
type: "POST",
url: "http://somedomain.freshdesk.com/widgets/feedback_widget",
// where you wanna post
data: formData,
processData: false,
contentType: false,
error: function(jqXHR, textStatus, errorMessage) {
console.log(errorMessage); // Optional
},
success: function(data) {
if(statusCode==200){
window.location="/thanks";
}
}
});
statusCode
变量就是我所追求的。如果我使用console.log(data)
它在Firebug中显示200 OK,但我得到的错误首先是不重定向,其次,Firebug吐出(an empty string)
如果有任何差异(https://serverfault.com/questions/196929/reply-with-200-from-nginx-config-without-serving-a-file)
,我正在使用NGINX答案 0 :(得分:1)
ajax()
提供了一个名为statusCode
的选项,您可以使用该选项根据您获得的状态代码执行操作。来自文档:
当响应具有相应代码时要调用的数字HTTP代码和函数的对象。如果请求成功,则状态码函数采用与成功回调相同的参数;如果它导致错误(包括3xx重定向),则它们采用与错误回调相同的参数。
因此,基于此,您可以说statusCode
的类型决定下一个应该调用的函数 - 成功还是错误。
以下是你的表现:
$.ajax({
type: "POST",
url: "http://somedomain.freshdesk.com/widgets/feedback_widget",
// where you wanna post
data: formData,
processData: false,
contentType: false,
error: function(jqXHR, textStatus, errorMessage) {
console.log(errorMessage); // Optional
},
statusCode: {
404: function() {
alert("page not found");
},
200: function() {
window.location="/thanks";
}
},
success: function(data, textStatus, jqXHR) {
//your code
},
error : function () {
}
});
答案 1 :(得分:0)
状态代码位于XHR对象的status
属性中:
...
error: function(jqXHR, textStatus, errorMessage) {
console.log(jqXHR.status);
},
success: function(data, textStatus, jqXHR) {
if(jqXHR.status==200){
window.location="/thanks";
}
}
...