2016-07-26 4 views
-1

私はテーブルから行を削除するためにajax呼び出しを行っている小さなサイトに取り組んでいます。私がしたいのは、phpが.successまたは.failを私のajaxリクエストで起動させるステータスコードを返すようにすることです。エラーステータスコードを返すためのajax

AJAX呼び出し:

function delete_mov(id){ 
    $.ajax("delete_mov.php?id="+id 
    ) 
    .success(function(){ 
     bootbox.alert("Movimento "+id+" correttamente cancellato"); 
    }) 
    .fail(function(){ 
     bootbox.alert("Problemi a cancellare il movimento "+id); 
    }); 
    } 

とPHP:

try{ 
    $s = $dbh -> prepare("DELETE FROM movimenti_banca WHERE di=$id"); 
    $s -> execute(); 
} 
catch (PDOException $e){ 
    http_response_code(500); 
    exit; 
    //$message = $error_message.' '.$e->getMessage(); 
} 
http_response_code(200); 

私は何を得ることができないことは.failをトリガすることで、私はこの解決策を考え出したが、それは動作していない別の質問を見ると クエリが実行されなかった場合、またはエラーが返された場合私はこの質問が失敗したと確信しています。なぜなら、これを確かめるために、IDの代わりにdiを入れているからです。 呼び出すphpファイルを削除すると、.failがトリガーされます。

EDIT:http_response_codeでテストするように修正されましたが、クエリが失敗したときにまだ500ステータスをトリガしません。

EDIT2:デバッグは、私は、クエリがエラーを持っている場合でも(di=$idid=$idでなければなりません)キャッチ部分が入力されていないので、ステータス500はPHPコード、使用の際には

答えて

0

jQueryは、あなたのPHPスクリプトが何をしているのか分からないので、返された結果に「ステータス」変数がないのです。すべてのjQueryは、実際のHTTPリクエストが「働いた」かどうかを知っています。それは関係なくで結果何が成功ません200結果、を取り戻す場合。

HTTP要求は成功したがデータに「エラー」があるか、PHPスクリプトでhttp_response_code()を使用してHTTPステータスを200から400などに変更した場合は、successハンドラを検索する必要があります。 500はエラーを示します。

+0

私は私のPHPで取得しようとしているものです。 500ステータスを返す。だから私はhttp_response_codeを使い、知っておいてよかった!ありがとう:) –

+0

私のコードにあなたのソリューションを適用しようとしましたが(編集されたコードを参照してください)、常に200を返します。 –

1

に設定されることはありませんことを実現しましたhttp_response_codeあなたが夢見ているものにHTTPステータスコードを設定する機能。

関連する問題