「成功した」Netlifyフォームの送信がダッシュボードに表示されない

jqlee85

Netlifyにcreate-react-appアプリケーションをデプロイしていて、react-netlify-formを使用してフォームをレンダリングしています。フォームがNetlifyダッシュボードに登録されており、送信すると成功の応答が返されますが、Netlifyダッシュボードに送信が表示されません。

最初は、reactガイド付きnetlifyフォームを使用してフォームを作成してみましたNetlifyダッシュボードに登録されましたが、送信は表示されませんでした。(index.htmlファイルで静的フォームを使用し、reactフォームでフォーム名を使用して非表示の入力フィールドを使用するようにしました。)

次に、react-netlify-formパッケージを使用してみましたが、送信で成功ステータスが返された場合でも、同じ問題が発生します。

XHRリクエストを見ると、200の応答コードが表示されます。 Netlifyフォーム送信のxhrリクエスト

index.htmlファイルに、Netlifyの静的フォームがあります。

<!-- Netlify static HTML form -->
<form name="contactform" netlify netlify-honeypot="__bf" hidden>
    <input type="text" name="name" />
    <input type="email" name="email" />
    <textarea name="message"></textarea>
</form>
<!-- End Netlify static HTML form -->

私のコンポーネントでは、次のようなフォームをレンダリングしています。

<NetlifyForm name='contactform'>
    {({ loading, error, success }) => (
      <div>
        {loading &&
          <div>Loading...</div>
        }
        {!loading && !success &&
          <div className="jo-contact-form">
            <h2 className="jo-contact-form-title">
              Contact
            </h2>
            <div>
              <div className="wrap-input100 rs1-wrap-input100 validate-input" data-validate="Name is required">
                <label htmlFor="name">Your Name</label>
                <input className={nameClasses} type="text" name="name" placeholder="Enter your name" value={name} onChange={this.handleChange}/>
                <span className="focus-input100"></span>
              </div>
              <div className="wrap-input100 rs1-wrap-input100 validate-input" data-validate = "Valid email is required: [email protected]">
                <label htmlFor="email">Email</label>
                <input className={emailClasses} type="email" name="email" placeholder="Enter your email addess" value={email} onChange={this.handleChange}/>
                <span className="focus-input100"></span>
              </div>
            </div>
            <div className="wrap-input100 validate-input" data-validate = "Message is required">
              <label htmlFor="message">Message</label>
              <textarea className={messageClasses} name="message" placeholder="Your message here..." value={message} onChange={this.handleChange}></textarea>
              <span className="focus-input100"></span>
            </div>
            <LinkButton text="Send" linkType="form" />  
          </div>
        }
        {error &&
          <div className="jo-contact-form-submission-message jo-contact-form-error">
            <div>
              Your information was not sent. Please try again later.
            </div>
          </div>
        }
        {success &&
          <div className="jo-contact-form-submission-message jo-contact-form-success">
            <div>
              Thanks for the message! Expect a reply shortly. 
            </div>
        </div>
        }
      </div>
    )}
</NetlifyForm>

私のHTMLでは、アプリがレンダリングされると、そのフォームは次のようになります。

<form name="contactform" action="/" data-netlify="true" data-netlify-honeypot="__bf">
  <input type="hidden" name="form-name" value="contactform"><input type="text" name="__bf" style="display: none;">
  <div>
      <div class="jo-contact-form">
        <h2 class="jo-contact-form-title">Contact</h2>
        <div>
            <div class="wrap-input100 rs1-wrap-input100 validate-input" data-validate="Name is required"><label for="name">Your Name</label><input class="input100" type="text" name="name" placeholder="Enter your name" value=""><span class="focus-input100"></span></div>
            <div class="wrap-input100 rs1-wrap-input100 validate-input" data-validate="Valid email is required: [email protected]"><label for="email">Email</label><input class="input100" type="email" name="email" placeholder="Enter your email addess" value=""><span class="focus-input100"></span></div>
        </div>
        <div class="wrap-input100 validate-input" data-validate="Message is required"><label for="message">Message</label><textarea class="input100" name="message" placeholder="Your message here..."></textarea><span class="focus-input100"></span></div>
        <div class="jo-link-button-wrapper">
            <div class="jo-link-button undefined form">
              <button type="submit" style="background-color: rgb(25, 25, 25); border: 1px solid rgb(25, 25, 25); color: white;">
                  <span class="button-text">Send</span>
                  <span class="button-arrow">
                    <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 476.213 476.213">
                        <polygon fill="white" points="345.606,107.5 324.394,128.713 418.787,223.107 0,223.107 0,253.107 418.787,253.107 324.394,347.5  345.606,368.713 476.213,238.106 "></polygon>
                    </svg>
                  </span>
              </button>
            </div>
        </div>
      </div>
  </div>
</form>

Netlifyダッシュボードで認識されているフォームと、送信時に表示される成功メッセージに基づいて、送信はダッシュボードに表示されると思いますが、そこには何もありません。

jqlee85

他の誰かが同様の問題に遭遇した場合に備えて、これに対する修正を見つけました。それが判明「コンテンツタイプ」ヘッダがあることが必要である「アプリケーション/ x-www-form-urlencodedでの」最終的にreact-netlify-formパッケージを廃棄し、このコンポーネントを使用しました。

import React, {Component} from 'react';
import  './Contact.css';
import LinkButton from '../LinkButton/LinkButton';
import qs from 'qs';

class Contact extends Component {

  constructor(props){
    super(props);
    this.state = { 
      name: '',
      email: '',
      message: '',
      canSubmit: false,
      submitResponse: false
    };  
  }

  handleSubmit = e => {

    e.preventDefault();

    if (!this.state.canSubmit) {
      return false;
    }

    let formData = {
      "form-name": this.props.name,
      "name": this.state.name,
      "email": this.state.email,
      "message": this.state.message,
    }

    fetch( window.location.href + "/", {
      method: "POST",
      headers: { "Content-Type": "application/x-www-form-urlencoded" },
      body: qs.stringify(formData)
    })
    .then(
      response => {
        console.log(response)
        console.log(response.status)
        if (response.status > 199 && response.status < 300){
          this.setState(prevState=>({
            submitResponse: 'success'
          }))
        } else {
          this.setState(prevState=>({
            submitResponse: 'error'
          }))
        } 
      }
    )
    .catch(
      error => {
        console.log(error)
        this.setState(prevState=>({
          submitResponse: 'error'
        }))
      }
    );
  }

  handleChange = (e) => {
    this.setState({ [e.target.name]: e.target.value });
    if ( this.state.name !== '' && this.state.email !== '' && this.state.message !== '') {
      console.log('fields filled in');
      this.setState(prevState => ({
        canSubmit: true
      }));
    } else {
      this.setState(prevState => ({
        canSubmit: false
      }));
    }
  }

  render() {

    const { name, email, message, canSubmit } = this.state;
    let containerClasses = 'jo-contact-form-container';
    if (!canSubmit) { containerClasses += ' inactive'; }
    if (this.props.colorScheme == 'dark' ) containerClasses += ' dark-bg';
    let nameClasses = 'input100';
    if (name !== '') nameClasses += ' has-val';
    let emailClasses = 'input100';
    if (email !== '') emailClasses += ' has-val';
    let messageClasses = 'input100';
    if (message !== '') messageClasses += ' has-val';


    return <div className="jo-contact-form">
      <h2 className="jo-contact-form-title">Contact</h2>
      {!this.state.submitResponse &&
        <form name={this.props.name} method="post" onSubmit={this.handleSubmit} data-netlify-recaptcha="true">
          <div className={containerClasses}>
            <input type="hidden" name="form-name" value="contactpageform"/>
            <div>
              <div className="wrap-input100 rs1-wrap-input100 validate-input">
                <label htmlFor="name">Your Name</label>
                <input className={nameClasses} type="text" name="name" value={name} onChange={this.handleChange}/>
                <span className="focus-input100"></span>
              </div>
              <div className="wrap-input100 rs1-wrap-input100 validate-input">
                <label htmlFor="email">Your Email</label>
                <input className={emailClasses} type="email" name="email" value={email} onChange={this.handleChange}/>
                <span className="focus-input100"></span>
              </div>
              <div className="wrap-input100 validate-input">
                <label htmlFor="message">Message</label>
                <textarea className={messageClasses} name="message" onChange={this.handleChange} value={message}/>
                <span className="focus-input100"></span>
              </div>
              {canSubmit && <LinkButton size="large" text="Send" linkType="form" />}
              {!canSubmit && <LinkButton size="large" text="Send" linkType="form" inactive={true} />}
            </div>
          </div>
        </form>
      }
      {this.state.submitResponse == 'success' &&
        <div className="jo-contact-form-submission-message jo-contact-form-success">
          <div>Thanks for the message! Expect a reply shortly.</div>
        </div>
      }
      {this.state.submitResponse == 'error' &&
        <div className="jo-contact-form-submission-message jo-contact-form-error">
          <div>Your information was not sent. Please try again later.</div>
        </div>
      }
    </div>
  }
}

export default Contact;

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

GatsbyサイトのNetlifyダッシュボードにフォームが表示されない

分類Dev

GatsbyサイトのNetlifyダッシュボードにフォームが表示されない

分類Dev

WordPressダッシュボードでフォーム送信後に成功メッセージを表示する

分類Dev

フォームの成功が成功として表示されない

分類Dev

HangFireダッシュボードがPRODに表示されない

分類Dev

Rフレックスダッシュボードにアイコンがまったく表示されない

分類Dev

FirebaseダッシュボードにAdMobの収益が表示されない

分類Dev

シャキッとしたDjangoフォームセット-送信ボタンが送信されない

分類Dev

フォームの送信が成功した後、AngularJSreCaptchaがリセットされない

分類Dev

Tumblrのフォロー/ダッシュボードボタンが表示されていますか?

分類Dev

ズームアウトしたときにGrafanaダッシュボードにデータが表示されない

分類Dev

ズームアウトしたときにGrafanaダッシュボードにデータが表示されない

分類Dev

MacOSのSpringTool Suiteダッシュボードでフォントが正しく表示されないのはなぜですか?

分類Dev

フォーム送信ボタンがクリックされた後、フォーム内の送信ボタンを非表示にするJQueryコード

分類Dev

キーボードが表示された後、フォームがiOS7の中央に配置されない

分類Dev

CLIでFirebaseへのクラウド機能のデプロイは成功しましたが、ダッシュボードには何も表示されません

分類Dev

Angular Material:親フォームが送信されたときに必須のマット入力フィールドにエラーが表示されない

分類Dev

JMeterHTMLダッシュボードレポートがJenkinsに表示されない

分類Dev

Answersダッシュボードに表示されないカスタム属性

分類Dev

ドロップダウン選択がフォームに送信されない

分類Dev

送信ボタンをクリックした後にのみフォームが表示される

分類Dev

フォームの送信がFirebaseに表示されない

分類Dev

フォーム送信時にReactフォームの値が表示されない

分類Dev

CakePHPドロップダウンフォームの値がコントローラーに送信されない

分類Dev

画面名がFirebaseAnalyticsダッシュボードに表示されない

分類Dev

Java Profiler JMCUIダッシュボードがMacOSに表示されない

分類Dev

jenkinsダッシュボードに資格情報が表示されない

分類Dev

Firebaseダッシュボードに価格値が表示されない

分類Dev

フォームをhtmlで送信した後、成功ダイアログボックスを表示するにはどうすればよいですか?

Related 関連記事

  1. 1

    GatsbyサイトのNetlifyダッシュボードにフォームが表示されない

  2. 2

    GatsbyサイトのNetlifyダッシュボードにフォームが表示されない

  3. 3

    WordPressダッシュボードでフォーム送信後に成功メッセージを表示する

  4. 4

    フォームの成功が成功として表示されない

  5. 5

    HangFireダッシュボードがPRODに表示されない

  6. 6

    Rフレックスダッシュボードにアイコンがまったく表示されない

  7. 7

    FirebaseダッシュボードにAdMobの収益が表示されない

  8. 8

    シャキッとしたDjangoフォームセット-送信ボタンが送信されない

  9. 9

    フォームの送信が成功した後、AngularJSreCaptchaがリセットされない

  10. 10

    Tumblrのフォロー/ダッシュボードボタンが表示されていますか?

  11. 11

    ズームアウトしたときにGrafanaダッシュボードにデータが表示されない

  12. 12

    ズームアウトしたときにGrafanaダッシュボードにデータが表示されない

  13. 13

    MacOSのSpringTool Suiteダッシュボードでフォントが正しく表示されないのはなぜですか?

  14. 14

    フォーム送信ボタンがクリックされた後、フォーム内の送信ボタンを非表示にするJQueryコード

  15. 15

    キーボードが表示された後、フォームがiOS7の中央に配置されない

  16. 16

    CLIでFirebaseへのクラウド機能のデプロイは成功しましたが、ダッシュボードには何も表示されません

  17. 17

    Angular Material:親フォームが送信されたときに必須のマット入力フィールドにエラーが表示されない

  18. 18

    JMeterHTMLダッシュボードレポートがJenkinsに表示されない

  19. 19

    Answersダッシュボードに表示されないカスタム属性

  20. 20

    ドロップダウン選択がフォームに送信されない

  21. 21

    送信ボタンをクリックした後にのみフォームが表示される

  22. 22

    フォームの送信がFirebaseに表示されない

  23. 23

    フォーム送信時にReactフォームの値が表示されない

  24. 24

    CakePHPドロップダウンフォームの値がコントローラーに送信されない

  25. 25

    画面名がFirebaseAnalyticsダッシュボードに表示されない

  26. 26

    Java Profiler JMCUIダッシュボードがMacOSに表示されない

  27. 27

    jenkinsダッシュボードに資格情報が表示されない

  28. 28

    Firebaseダッシュボードに価格値が表示されない

  29. 29

    フォームをhtmlで送信した後、成功ダイアログボックスを表示するにはどうすればよいですか?

ホットタグ

アーカイブ