2

構築中の Web アプリの連絡先フォームで jQuery を使用しています。サーバーから次のような JSON 応答を取得しています。

{"success": true}

これまでの私のjQueryは次のとおりです。

$('.contact-form').on('submit', function(e) {

            // Prevent submitting
            e.preventDefault();

            // Loading from data-* attr
            var $submit = $('#contact-submit');
            $submit.html($submit.data('text'));

            // Form data
            var form      = $(this);
            var post_url  = form.attr('action');
            var post_data = form.serialize();

            // Ajax call
            $.ajax({
                type    : 'POST',
                url     : post_url,
                data    : post_data,
                dataType: 'json',
                success: function(){

                },
                error: function(){

                }
            });

        });

「成功」jQueryメソッドで以前にJSON応答に対して「チェック」したことがないため、壁にぶつかりました。これについて誰か助けてもらえますか? 取得している応答を確認する方法を探しています。「true」が表示された場合は、「送信成功」メッセージが表示されます。

4

3 に答える 3

7

成功のコールバックは、json オブジェクトを最初のパラメーターとして取得します。以下に示すように、コールバックで使用できます。

$.ajax({
    type : 'POST',
    url : post_url,
    data : post_data,
    dataType : 'json',
    success : function(data) {
        if(data.success){
            //do something if success
        }

    },
    error : function() {

    }
});
于 2013-04-18T09:06:04.890 に答える
2

たとえば、HTTP コード 200 (OK) または 201 (Created) でサーバーに応答しないでください。次に、jQuery で自動的に成功パラメーターに分類され、すべてがうまくいきました。

サーバーにエラーがある場合、たとえばコード 422 (Unprocessable Entity) を使用すると、jQuery ajax は自動的にエラーになります。

これが不可能な場合は、JSON.parse(data) を使用して解析し、ツリーをたどってみてください。解析に失敗した場合、json は無効です。

Java バックエンドを想定すると、返信は次のようになります: How to send a HTTP error for a Java RESTful Web service? ; これは、使用しているクラス/フレームワークによって異なります。たとえば、HttpReponse ステータスを 422 に設定します。

ajax 呼び出しは次のようになります。

$.ajax({
    type    : 'POST',
    url     : post_url,
    data    : post_data,
    dataType: 'json',
    success: function(){
        // Everything went okay
    },
    statusCode: {
        422: function() {
            // Something went wrong (error in data serverside)
        }
    }
});
于 2013-04-18T09:07:39.140 に答える
1

以下が機能するはずです。

success: function(result) {
  var thing = $.parseJSON(result.d);
  if (thing.success) {

  }
}
于 2013-04-18T09:02:07.103 に答える