質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

670閲覧

ajaxによるメール送信で、送信成功しているのにエラーメッセージが表示される

mari.rinn

総合スコア296

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/06/07 04:28

編集2019/06/07 04:52

ajaxを使ってメール送信したくて、こちらのサイト https://tadworks.jp/archives/1122 と、
phpの方は こちら http://www.htmq.com/tutorial/30_10.shtml も参考にそれぞれのコードを書きました。

html

1<input type="text" id="send-name" name="send-name" placeholder="名前を入力してください。" value="" /><br> 2<input type="email" id="send-email" name="send-email" placeholder="メールアドレスを入力してください。" value="" /><br> 3<input type="text" placeholder="件名を入力してください。" id="send-subject" name="send-subject" value="" /><br> 4<textarea type="text" placeholder="メッセージを入力して下さい。" id="send-body" rows="10" name="send-body"></textarea> 5<input type="hidden" name="test" value="" id="formtest"> 6<input type="button" id="send-btn" value="送信する"> 7<div></div>

jQuery

1 2$(function() { 3 // 送信確認 4 $('#send-btn').on('click', function() { 5 6 // フォームから入力値を取得 7 var name = $('#send-name').val(); 8 var subject = $('#send-subject').val(); 9 var body = $('#send-body').val(); 10 var email =$('#send-email').val(); 11 var formtest =$('#formtest').val(); 12 13 // 入力内容の確認 14 15 if(formtest != ""){ 16 if(name != "" && subject != "" && body != "" && email != ""){ 17 18 // PHPに送信 19 $.ajax({ 20 type: 'POST', 21 dataType: 'json', 22 url: "https://~~~~~~~~/main.php", 23 data: { 24 name:name, 25 email:email, 26 subject:subject, 27 body:body 28 }, 29 success: function( data ) { 30 if(data.match(/success/)){ 31 $('div').text("送信が完了しました。"); 32 location.href = "./"; // 送信後戻り先URL 33 } 34 }, 35 error: function() { 36 $('div').text("予期せぬエラーが発生しました。"); 37 } 38 }); 39 } else { 40 $('div').text("未入力の項目があります。"); 41 42} 43 } else{ 44 $('div').text("このリクエストは受け付け出来ません。"); 45 } 46}); 47});

PHP

1 2<?php 3// データ取得 4$name = filter_input( INPUT_POST, "name" ); 5$subject = filter_input(INPUT_POST,'subject'); 6$email = filter_input(INPUT_POST,'email'); 7$body =filter_input(INPUT_POST,'body'); 8 9 $honbun = ''; 10 $honbun .= "メールフォームよりお問い合わせがありました。\n\n"; 11 $honbun .= "【お名前】\n"; 12 $honbun .= $name."\n\n"; 13 $honbun .= "【メールアドレス】\n"; 14 $honbun .= $email."\n\n"; 15 $honbun .= "【お問い合わせ内容】\n"; 16 $honbun .= $body."\n\n"; 17 18 //エンコード処理 19 mb_language("Japanese"); 20 mb_internal_encoding("UTF-8"); 21 22 //メールの作成 23 $mail_to = "~~~~~@~~~~~"; //送信先メールアドレス 24 $mail_subject = $subject; //メールの件名 25 $mail_body = $honbun; //メールの本文 26 $mail_header = "from:".$email; //送信元として表示されるメールアドレス 27 //メール送信処理 28 $mailsousin = mb_send_mail($mail_to, $mail_subject, $mail_body, $mail_header); 29 //メール送信結果 30 if($mailsousin == true) { 31 echo "success"; 32 } 33

これで送信ボタンを押すと、メール送信自体は正常に出来るのですが、送信ボタン下のdivの所には、
「予期せぬエラーが発生しました。」という、エラーメッセージが表示されてしまいます。
chromeのConsoleには何もエラーメッセージは出ていません。

この原因がわかりますでしょうか? よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/06/07 04:39

実際のコードにない文言はコードブロックから出してもらえますか? コピペで再現確認する際に削除する手間が発生しますし、削除することで完全な再現確認にならないこともあります。
mari.rinn

2019/06/07 05:05

ご指摘頂きましてどうもありがとうございました。いらないものは削除いたしました。
guest

回答1

0

ベストアンサー

success/errorよりはdone/failで受けましょう
また失敗時にはfailの引数で調査できます

javascript

1 $.ajax({ 2 type: 'POST', 3 dataType: 'json', 4 url: "main.php", 5 data: ・・・ 6 }).done(function(data){ 7 console.log(data); 8 }).fail(function(xhr,err){ 9 console.log(err); 10 });

怪しいのは2点

  • urlでドメイン外のphpを指定しているためCORS
  • dataTypeにJSONを指定しているので戻り値の型がちがってパーサーエラー

とりあえず後者の場合はdataTypeを"text"にしてチェックができます

投稿2019/06/07 04:35

yambejp

総合スコア114784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mari.rinn

2019/06/07 05:03

早速のご回答ありがとうございました。 書いていただいた、done/failでのコードに変更し、dataType:JSON;を削除したら、無事に「送信が完了しました」が表示されました!! ほんとにどうもありがとうございました~~~!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問