0

我制作了一个简单的 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)

如果有任何区别,我正在使用 NGINX(https://serverfault.com/questions/196929/reply-with-200-from-nginx-config-without-serving-a-file

4

2 回答 2

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 () {
        }


});
于 2013-06-17T10:21:52.320 回答
0

状态码在statusXHR 对象的属性中:

    ...
    error: function(jqXHR, textStatus, errorMessage) {
         console.log(jqXHR.status);
    },
    success: function(data, textStatus, jqXHR) {
        if(jqXHR.status==200){
            window.location="/thanks";
        }
    } 
    ...
于 2013-06-17T10:14:06.677 回答