2012-02-27 13 views
2

私はAJAXを通じて、以下のPHPスクリプトを実行し、その中にいくつかのエラー管理を統合するために必要だ:AJAXの成功機能でjQuery ajaxの成功条件は?

$exists = file_exists('../temp/' . $email . '/index.html'); 
if($exists) { 
    echo "ERROR!!!"; 
} else { 
    createUserDirectory($email); 
} 

、どのように私は、スクリプトが正常に実行されたか、エラーが発生したかどうかを判断することができますか?

[OK]を戻すと、その時点でリダイレクトを実行しますが、エラーが発生した場合は、そのエラーをドキュメント内のDIVに追加します(もちろんリダイレクトされません...)。 )。

$.ajax({ 
      type: "POST", 
      url: 'generate/build.php', 
      data: $("#generateStart").serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
       window.location.href="generate-site.php?user=" + data.replace(/^ +/,"") + ""; // Redirect to publish.php and remove any spaces from the URL (bug fix). 
      } 
     }); 

ありがとうございます。

+0

あなたはdata' 'の内容を確認することができませんか?また、結果をjsonとして返すこともできますし、 'status'プロパティ(" ok "/" error "など)や' error'プロパティ(エラーがある場合のみ)を含めてチェックしてください。 – ori

+0

@ori - これは理想的な方法のようです。おそらくJSONとして結果を返す方法についてもう少し手引きをして答えに入れてください。それから成功ハンドラ内で結果にアクセスし、それを受け入れることができますか?ありがとう。 – tctc91

+0

私は思うが、@ wsanvilleの答えは良いと思う。なぜHTTPステータスコードを使用しないのですか? – ori

答えて

4

PHPスクリプトでは、失敗を示すために4xxまたは5xxHTTP status codeが返されます。次に、errorメソッドjQuery's ajax objectが呼び出されます。

+0

私はこれを試してみます。ありがとう。 – tctc91

0

successハンドラの中で、if(data == 'ERROR!!!')をチェックしてください。

+0

私はこのように考えていましたが、 "ERROR !!!"一時的なものであり、実際のエラーはこれよりもはるかに長くなるでしょう。 – tctc91

0

$ .ajax関数のエラーコールバックは、要求がネット上で失敗したかどうかを確認し、戻り値をチェックしてサーバーの検証に失敗したかどうかを確認します(この場合はファイルが存在します)。

例:

$.ajax({ 
    ... 
    success : function(data) { 
     if(data && data != "ERROR!!!") { 
      //redirect 
     } 
    }, 
    error: function(jqXHR, textStatus, errorThrown) { 
     //Log error, display feedback to user, etc... 
    } 
);