PHPを使用して、JQuery .ajax()の適切な成功/エラーメッセージを返すにはどうすればよいですか?
2023-10-12 06:12:12
質問
エラーアラートが何度も表示されます。MYSQLの部分には何の問題もなく、クエリは実行され、データベース内の電子メールアドレスも見ることができます。
クライアント側です。
<script type="text/javascript">
$(function() {
$("form#subsribe_form").submit(function() {
var email = $("#email").val();
$.ajax({
url: "subscribe.php",
type: "POST",
data: {email: email},
dataType: "json",
success: function() {
alert("Thank you for subscribing!");
},
error: function() {
alert("There was an error. Try again please!");
}
});
return false;
});
});
</script>
サーバ側です。
<?php
$user="username";
$password="password";
$database="database";
mysql_connect(localhost,$user,$password);
mysql_select_db($database) or die( "Unable to select database");
$senderEmail = isset( $_POST['email'] ) ? preg_replace( "/[^\.\-\_\@a-zA-Z0-9]/", "", $_POST['email'] ) : "";
if($senderEmail != "")
$query = "INSERT INTO participants(col1 , col2) VALUES (CURDATE(),'".$senderEmail."')";
mysql_query($query);
mysql_close();
$response_array['status'] = 'success';
echo json_encode($response_array);
?>
どのように解決するのですか?
JSON dataTypeを使用している場合、正しいcontent typeを提供する必要があります。jsonをエコーする前に、正しいヘッダを付けてください。
<?php
header('Content-type: application/json');
echo json_encode($response_array);
?>
追加修正として、クエリーが成功したかどうかをチェックする必要があります。
if(mysql_query($query)){
$response_array['status'] = 'success';
}else {
$response_array['status'] = 'error';
}
クライアント側では
success: function(data) {
if(data.status == 'success'){
alert("Thank you for subscribing!");
}else if(data.status == 'error'){
alert("Error on query!");
}
},
お役に立てれば幸いです。
関連
-
[解決済み】PHP - 構文エラー、予期しないT_CONSTANT_ECAPSED_STRING [閉店].
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] jQueryを使って要素のIDを取得するにはどうすればよいですか?
-
[解決済み] jQueryを使ったAjaxリクエストの中断
-
[解決済み] jQuery Ajax呼び出し後のリダイレクトリクエストを管理する方法
-
[解決済み] jQueryを使用してハイパーリンクのhref属性を変更する方法
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] jQueryを使用してdivのinnerHTMLを置き換えるには?
-
[解決済み] Ajaxリクエストが200 OKを返すが、successではなくerrorイベントが発生する
-
[解決済み】PHPによるjQuery Ajax POSTの例
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP 7.2 - Warning: count(): パラメータは配列かCountableを実装したオブジェクトでなければならない [解決済み]
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み】メンバ関数をnullで呼び出す?
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
MacでPHPを実行した際に、メモリサイズが134217728バイトも消費される問題の解決方法について
-
[解決済み】Fatal error: mysqli_result 型のオブジェクトは使用できません [終了] 。
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] Uncaught Error: 未定義の関数 mysql_escape_string() の呼び出し。