0

FreshDesk (チケット アプリケーション) に投稿する簡単な HTML フォームを作成しました。フォームが 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

ステータス コードはstatus、XHR オブジェクトのプロパティにあります。

    ...
    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 に答える