• 締切済み

ajaxでエラー処理

お世話になります。 prototype.jsを使ってajaxのエラー処理を考えております。 そこで質問なのですが、以下のソースで OK.phpでは正常に処理が行われ、 NG.phpでは強制的にonFailure処理を行わせたいと考えております。 PHP側(NG.php)で、操作出来ませんでしょうか? よろしくお願いいたします。 <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <script type="text/javascript" src="prototype.js"></script> <script type="text/javascript"> <!-- function ajax(fName) { var filename = fName + "?cache="+(new Date()).getTime(); new Ajax.Request(filename, { method: "get", onSuccess: displayData, onFailure: displayError }); } function displayData(httpObj) { $("result").innerHTML = httpObj.responseText; } function displayError(httpObj) { $("errMsg").innerHTML = httpObj.responseText; } // --> </script> </head> <body> <input type="button" value="正常処理" onClick="ajax('OK.php')"><br> <input type="button" value="エラー処理" onClick="ajax('NG.php')"><br> <div id="result"></div> <div id="errMsg"></div> </body> </html>

みんなの回答

  • foreach
  • ベストアンサー率51% (43/84)
回答No.1

onFailureが出る状況というのは通信エラーなど物理的なエラーに起因するところが多いわけなので、例えば与えたパラメータに起因してPHP側でエラーが生じたとしても、通信そのものは成功しているのでonSuccessに処理が移行されるはずです。 私だったら、PHP側でエラーの場合は文字列でerrorとかにして、onSuccessでerrorだったらエラー処理、そうじゃなかったら正規の処理といったように分岐させて組みます。

bakenshibakenshi
質問者

お礼

foreach様、ご教授ありがとう御座います。 そうですね。onSuccess時にエラー判定するというのもありますね。 NG.phpで404エラーなどを投げるのもありかな!?と思ってきております。

関連するQ&A

専門家に質問してみよう