1

ajaxSubmit でエラーをキャッチするのに問題があります。

$(document).ready(function(){

        $("#supportForm").validate({
              rules: {
                 //validation
              },

              messages: {              
                 //messages
              },

              submitHandler: function(form) {
                    $(form).ajaxSubmit({
                        url:"ajax/supportform",
                        type:"GET",
                        dataType: 'json',
                        error: function() { alert('error'); },
                        success: function() {alert('success'); },


                    });
              }

        });  
    })

エラーイベントを発生させるには、php スクリプトで何を返す必要がありますか?

error=>0 、 exit(json_encode('error'=>'0'); などの配列を返そうとしました。

4

3 に答える 3

5

Mike de Klerk のリンクを参照してください。エラーをトラップするために何をしなければならなかったかについての手がかりが得られました。

成功とエラーのコールバックは、ブール値のエラー/成功メッセージを渡すこととは関係がないようですが、URL が正常に呼び出された場合のみです。404 または 403 ページであっても、常にある種のコンテンツを返す CMS を使用しているため、エラー結果は得られないと思います。

とにかく、php スクリプトから json 文字列を返す必要がありました。

<?php


$response = json_encode(array("error" => "false","message" => "this is the error message"));

return $response;

次に、成功のコールバックでそれを解析します。

submitHandler: function(form) {
        $(form).ajaxSubmit({
            url:"ajax/supportform",
            type:"POST",
            dataType: 'json',

            error: function(data ) { alert(data); },

            success: function(response) {

            var obj = jQuery.parseJSON(response);

            if(obj.error == "true"){
                alert('error is true');
            }else{
                alert('error is false')
            }

            },


        });
  }
于 2012-11-27T20:36:40.800 に答える
2

編集: PHP からの特定のエラーの説明を表示するには、次の質問を読む必要があります: jQuery Ajax error handling, show custom exception messages

サーバーにエラーを生成させます。PHP を使用すると、次のように実行できます。

<?php
header("HTTP/1.0 404 Not Found");
?>

ヘッダー関数のドキュメントを確認してください: http://nl.php.net/manual/en/function.header.php

ここで行っているのは、Web ブラウザーに、典型的な HTML ソースに属さないデータを提供することです。これにより、Web ブラウザーは何か問題が発生したことを認識します。

実際には、必要なすべてのメタ データを Web ページ リクエストのヘッダーに追加することもできますが、Web ブラウザがそれが何を意味するのかわからない場合、単純に無視されます。ここで定義またはステータス コードを参照してください: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

于 2012-11-27T19:08:34.187 に答える
0

エラーを強制するには、URLを存在しないものに変更してください

          function(form) {
                $(form).ajaxSubmit({
                    url:"ajax/supportform001",
                    type:"GET",
                    dataType: 'json',
                    error: function() { alert('error'); },
                    success: function() {alert('success');} // <-was an extra comma
                });
          }
于 2012-11-27T19:11:03.583 に答える