ajax + PHPによるエラーの返し方について

このQ&Aのポイント
  • エラーが返ってこない問題について質問します。
  • ajax_upd_user.phpでエラーコードを返し、error関数に遷移させたいです。
  • 現在はエラーメッセージが表示されず、success関数が実行されてしまいます。
回答を見る
  • ベストアンサー

ajax + PHPによるエラーの返し方について

エラーが戻ってこず困っています。 質問させてください。 ■質問内容 以下の記載の、【url: "./ajax_upd_user.php",】内部にて 任意のエラーコードを返し、【error: function(){】へ遷移するようにしたい。 ■現状 【ajax_upd_user.php】で任意のPHPの「throw new exception」を返しても successになってしまう。。。 ■ソースコード一部 ○「test.php」に以下のコードを記載 $.ajax({ type: "POST", url: "./ajax_upd_user.php", data: strData, dataType: "html", success: function(res){ $('#form_Area').oneTime(2000,function(){ $('#form_Area').unmask(); getUpdateAll(res); })}, error: function(){ $('#form_Area').unmask(); alert( "登録処理でエラーが発生しました。"); } }); お手数ですが、知っている方いらっしゃいましたら ご教授お願いいたします。 以上、よろしくお願いいたします。

  • AJAX
  • 回答数1
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • shiren2
  • ベストアンサー率47% (139/295)
回答No.1

例外を投げても200 OKのままでしょうから、 header関数で任意のコードを返しましょう。 <?php header("HTTP/1.1 503 Service Unavailable"); ?>

super-max-power
質問者

お礼

shiren2さん ご回答ありがとうございます。 おっしゃる通りにしたらエラーとして返りました。 非常に助かりました。 ありがとうございます!

関連するQ&A

  • Ajaxがおかしいんです

    Javascript初級者です。 Ajaxを使ってデータの重複チェックを行おうとしました。 ところがAjaxがヘンな動きをするんです。 以下のコードなんですが、上の登録処理の中で、function doubleCheck を呼んで います。 問題は2つあって、ひとつは実際に重複していてもしていなくても「true」を 返してくることです。 console.log("res=========" + res) には「yes」とか「no」とか重複有り無しで 異なりますが、ちゃんとそれぞれセットするにも関わらず、 if(!doubleCheck() では必ず「false」が戻ってきてしまいます。 もう一つおかしい点は、重複検索(これはPHPでやってます)の最中にもかかわらず、 「true」が返ってきて "重複があったので登録できません。" お、出てしまうことです。 それで調査するために console.logその2を入れてみました(※※※のところ)。 ところがこの console 何も吐き出しません。 ということは doubleCheck() の最後の if文にたどり着いていない、または 途中でエラーになっているのかもしれません。 私の書いた Ajax のコードがおかしいんでしょうか。 どなたか御指導下さい。 よろしくお願いします。 // 追加登録処理 function doActionAdd(){ if(dataCheck()){ // customerId が 空白か否かのチェック if($('#customerId').val() == ""){ if(window.confirm("追加登録していいですか?")){ if(!doubleCheck()){ window.alert("重複はありませんでした"); }else{ window.alert("重複があったので登録できません。"); }  (以下略) function doubleCheck(){ var yomi = $('#customerYomi').val(); var res = ''; // 重複チェック $.ajax({ type: "POST", url: "../customer/CustomerDoubleCheck.php", data: {"customerYomi":yomi}, dataType: 'text', // ajax通信が成功したときの処理 success: function(request){ console.log("request=========" + request); var json = JSON.parse(request); console.log(json[0].result ); res = json[0].result; console.log("res=========" + res); }, error: function(XMLHttpRequest, textStatus, errorThrown){ $('div#jobStatus').text("重複チェック検索ができませんでした。"); return false; } }); console.log("resその2=========" + res); //※※※ if(res == "yes"){ // 重複していたので「false」を返す。 return false; }else{ // 重複していなかったので「true」を返す。 return true; } }

  • PHPのフォームとAjaxを組み合わせたいのですが

    簡潔にコードを書かせて頂きますが、PHPとjQueryによるAjaxを連携させたいと考えています。 まずform.phpのフォームをsubmitし、その内容をpost.phpへ送り、リダイレクトにてres.phpへ送るという、PHPの基本的な動きをさせますが、 その結果はres.phpという新しいページではなく、Ajaxにてform.phpの<div id="text1">部に元々書かれている<form>ではなく、res.phpの出力内容を出力したいと考えております。 この場合、どのようにjQueryコードを記述すればいいのでしょうか? 色々考えて試してみたのですが、上手くいきませんでした。 自分はform.php、post.php、res.phpという3つのファイルを用意していますが、もしかしたらori.phpという出力用のファイルを用意し、その<div>空間内にform.phpのフォームやres.phpの結果をAjaxによって出力するのかなとも思いましたが、良く分かりませんでした。 アドバイス頂けないでしょうか? 宜しくお願い致しします。 (( form.php )) <html> <head> <script type="text/javascript" src="./js/jQuery-1.4.4.js"></script> </head> <body> <div id="text1"> <h2>その1</h2> <form action="post.php" method="POST" id="form" name="form" > <input type="checkbox" id="news" name="news" value="news" /> ニュース <br /> <input type="submit" name="submit" value="submit" /> <input type="reset" name="reset" value="reset" /> </form> </div> </body> </html> (( post.php )) <?php session_start(); session_regenerate_id(TRUE); $_SESSION["news"] = "news 表示"; $host = $_SERVER['HTTP_HOST']; $uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); $extra = 'res.php'; header("Location: http://$host$uri/$extra"); (( res.php )) <?php session_start(); session_regenerate_id(TRUE); ?> <html> <head> <script type="text/javascript" src="./js/jQuery-1.4.4.js"></script> </head> <body> <div id="text2"> <h2>その2</h2> <?php $_SESSION["news"]; ?> </div> </body> </html> <?php session_destroy(); $_SESSION = ''; ?>

    • ベストアンサー
    • PHP
  • $.ajax({ って何ですか?

    javascriptとajaxを現在勉強中です。 フリーのソースをダウンロードしたら、 function writeComment(params) { $.ajax({ type: "<?php print METHOD; ?>", url: writescript+params, success: function() { // 受信完了イベント main.php window.mainframe.getLog(); } }); } 「$.ajax({」の使い方が、調べたのですがわかりません。 Ajax.Requestという意味なのは、なんとなくわかるのですが・・。 こういう書き方もあるのでしょうか? どなたかご教授お願い致します。

  • ajaxの結果をphpで取得する方法

    お世話になっております。 PHPは全くの初心者ですが、jqueryのajaxでGETした内容を PHPでも使用したく、ご教示願いたいのですが、 以下のajaxの「info.a」の値をphpで使用するには どうすればよいでしょうか。 $.ajax({ type: 'GET', scriptCharset:'utf-8', url: '/hoge.jsp', dataType: 'text', cache : false, }) .success(function(data){ var data = data.split(','); info = { a :data[0], b :data[1], }; }) .error(function(XMLHttpRequest, textStatus, errorThrown) { return false; }); <?php $a = $_GET['info.a']; ?> 何卒よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ajaxからのPHP呼び出し時にエラー画面に遷移させたい

    お世話になります。 ただいまajax+PHPで開発しております。 で、今困っているのがajaxからPHPを呼び出し エラーが起きたい際にエラー画面に遷移させたいと 考えているのですが、ajaxのAjax.Updaterのsuccess時の id指定の箇所にしか表示されません。 そもそもajaxから呼び出した際は、エラー画面には遷移できないもの なのでしょうか? 申し訳ありませんが、ご教授願えないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • AJAXの書き方について

    <script type="text/javascript"> $( function() { $( '#ajax-button' ) .click( function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); } ); </script> この部分は何を意味しているのでしょうか? $( '#ajax-button' ) .click( またここの部分をIDにして二つ別々のIDを書いてblur(fn()にしたい場合はどうすればいいのでしょうか? $("[id$=NO]").blur(function(){ $("[id$=NM]").blur(function(){ function() { $.ajax({ url: 'http://localhost:8080/app/family', type:'GET', data: {test1 : 'aaa', test2 : 'bbb' }, dataType: 'jsonp', success: function(data) { alert("ok"); }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert("ng"); } }); }); }); }); このようにしても動きません。 正しい書き方を教えていただきたいです。

  • jQueryでajax

    ajax(jQuery使用)を使った以下のサンプルは、 セレクトボックスを選択すると、ボタンを表示するのですが、 そのボタンをクリックしても、アラート(This is success!)が表示されません。 ajaxで吐き出した<button>ボタン</button>のボタンのクリックイベントが 検知しないような感じですが、いったいどこが間違っているのかわかりません。 どなたか、ご教授いただけると助かります。 htmlソース ------------------------------------------- <meta http-equiv="content-script-Type" content="text/javascript" /> <meta http-equiv="content-style-Type" content="text/css" /> <link rel="stylesheet" href="./photo.css" media="all" /> <title> テスト</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $("button").click(function() { alert("Test is success!"); }); $(".first").change(function() { var param = ''; $.ajax ({ type: "POST", url: "ajax.php", data: param, cache: false, success: function(res) { $("#result").html(res); } }); }); }); </script> </head> <body> <select name="first" class="first" id="first"> <option value="1">項目1</option> <option value="2">項目2</option> </select> <p>結果:</p> <div id="result" style="width:808px;"></div> </body> </html> phpソース ---------------------------------------- <?php echo '<button>ボタン</button>'; ?>

    • ベストアンサー
    • AJAX
  • phpに値が送られない

    PHP側に値が送られなくて困ってます!! どなたか助けて頂けないでしょうか $(function() { $('a') .click(function() { var id = this.id; alert(id); $.ajax({ type: 'POST', dataType:'json', url:'editor_text.php', data:{ item:id }, success:function(data) { alert(data); }, error:function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); } }); }); });

    • ベストアンサー
    • AJAX
  • jquery PHP 値 ajax

    失礼します。現在jqueryで作成した2次元配列をPHP側に渡したいのですが上手くいきません。 jquery側のコンソールで確認した際にはsuccessの処理が行われ配列の中身がjson形式で表示されるのですが、その内容をPHP側で確認しようとするとNULLが返ってきてしまいます。 何卒ご教授よろしくお願いいたします。 html側 $(function(){ // 送るデータ形式はJSONでなければ、PHP側でエラーが出る.のでJSON.stringify()でJSON形式に変換 send_data= JSON.stringify(data); // 送信処理 $.ajax({ url: "ajax.php", // 送信先のPHP type: "POST", // POSTで送る contentType: "Content-Type: application/json; charset=UTF-8", //必須ではなさそうだが、サーバ側との整合のために明示しておいた方がよい。 // dataType: 'json', //受信形式 必須ではなさそうだがサーバ側との整合のために明示しておいた方がよい。 data:send_data //JSON形式の送信データ }).success(function(data, status, xhr) { // 通信成功時の処理 console.log("success"); console.log("data ="+data); console.log("status ="+status); console.log("xhr ="+xhr); }).error(function(xhr, status, error) { // 通信失敗時の処理 console.log("error"); }).complete(function(xhr, status) { // 通信完了時の処理 console.log("fin"); }); }) }) PHP側 二通り試してみました。 <?php //php://inputはPOSTの生データを取得できる $json = file_get_contents("php://input"); //JSON形式データをPHPの配列型に変換 $data = json_decode($json); var_dump($data) ; //POSTできたデータを格納 $hoge = $_POST['data']; var_dump($hoge);

    • ベストアンサー
    • AJAX
  • JS(ajax)でphp(csv)の読み込み

    こんにちは。 Javascriptのご教授お願いしたく、書き込みました。 今JavascriptでAjaxを使って、CSVを読み込むPHPを実行しています。 PHPでは、CSVを読み込み(readcsv.php)、その結果を別のファイル(alert.html)に受け渡しています。 問題が、読み込んでいるJavascript側でもデータを一つ一つ取得したいですが、 方法が分かりません。ご教授お願いします。 構成 : alert.html(Javascript), readcsv.php, test.csv コード構成 : -------------------------------------------------------------------------- alert.html <script type="text/javascript"> $.ajax({ type: "POST", url: "readcsv.php", success: function(printString) { alert(printString); --> ここをどうするべきか悩んでいます。 }, error:function(){ alert("error"); } } ); </script> ------------------------------------------------------------------------------- readcsv.php <?php $filename = "test.csv"; $row = 1; $rowS = 1; if (($handle = fopen($filename, "r")) !== FALSE) { while (($data = fgetcsv($handle, 1000, "*")) !== FALSE) { $num = count($data); $row++; for ($c=0; $c < $num; $c++) { $String = explode(",", $data[$c]); foreach ($String as $AllString) { echo $AllString."\n"; } echo "\n"; } } fclose($handle); } ?> ---------------------------------------------------------------------------- test.csv 1,2,3,4,6,8*9,1,2,3,5,7,2,1,3,5*7,2,1,2,3,5,7,2*1,5,3 ---> 数字の羅列(コンマ区切り) ---------------------------------------------------------------------------- です。 一番問題になっているところは、 alert.html の alertのところで、 readcsv.php から受け取った値を一つ一つ変数に格納したいところです。 ご教授お願いします。