【问题标题】:Submitting a form works but no message shows提交表单有效,但没有消息显示
【发布时间】:2021-07-13 04:16:22
【问题描述】:

我正在使用 Laravel 8 创建一个网站。我将数据库链接到一个表单,它可以工作。当我提交表单时,唯一的问题是它显示黑屏并且正在下载。可以获取到数据库中保存的数据,但是没有消息显示,这个block根本不行。

我猜这是一个前端问题。有人知道吗?

Blade 中的表单代码:

<section id="share-story" class="contact">
  <div class="container" data-aos="fade-up">

    <div class="section-title">
      <h2>Stories</h2>
      <p>Share Your Story with Us</p>
    </div>
      <div class="col-lg-8 mt-5 mt-lg-0">

        <form action="{{route('share-story')}}" method="post" role="form" class="php-email-form">
          @csrf
          
          <div class="form-row">
            <div class="col-md-6 form-group">
              <input type="text" name="name" class="form-control" id="name" placeholder="Your Name" data-rule="minlen:4" data-msg="Please enter at least 4 chars" />
              <div class="validate"></div>
            </div>
            <div class="col-md-6 form-group">
              <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" data-rule="email" data-msg="Please enter a valid email" />
              <div class="validate"></div>
            </div>
          </div>
          <div class="form-group">
            <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" data-rule="minlen:4" data-msg="Please enter at least 5 chars of subject" />
            <div class="validate"></div>
          </div>
          <div class="form-group">
            <textarea class="form-control" name="story" rows="5" data-rule="required" data-msg="Please Share Something" placeholder="Your Story"></textarea>
            <div class="validate"></div>
          </div>
          <div class="mb-3">
            <div class="loading">Loading</div>
            <div class="error-message"></div>
            <div class="sent-message"> Your post has been sent. Thank you!</div>
          </div>
          <div class="text-center"><button type="submit"> Send Story </button></div>
        </form>

      </div>

    </div>

  </div>

后控制器

public function store(Request $request)
{
    $response = Posts::create($request->all());

    if ($response) {
        return redirect()->back()
            ->with(['msg' => 'post has been added', 'status' => 201]);
    } else {
        return redirect()->back()
            ->with(['msg' => 'an issue occured', 'status' => 201]);
    }
}

这是how it looks,即使我在数据库中获取了数据。

【问题讨论】:

  • 分享代码可以找到问题。请分享相关部分代码
  • 您确实需要发布一些代码并提供一些示例。至少就像您发布的内容、发布方式(即 AJAX 与否)、路由、控制器以及您返回的内容(如果通过 JSON 用于 AJAX 的任何内容)、任何错误消息等。
  • 检查return back()是否在工作,而不是return redirect()-&gt;back()
  • 发布您用于警报消息的 Javascript、AJAX 或 JQuery 代码。

标签: php laravel macos forms laravel-8


【解决方案1】:

某些时间过去是行不通的,因为您已经提交了表单,现在您无法访问以前的路线。 其他时候,该特定选项卡(对于基于 JavaScript 的网站)或服务器会话(对于服务器呈现的网站)上的浏览器历史记录没有反向路由,因为您可以直接访问特定路由。

所以我总是建议避免使用return redirect()-&gt;back();,而是使用您想要返回的特定路线。如return redirect()-&gt;route('hello');

【讨论】:

    【解决方案2】:

    使用此代码:

    if ($response) {
        return redirect()->route('')->with(['msg' => 'Post has been added', 'status' => 201]);
    } else {
        return redirect()->route('')->with(['msg' => 'An error occured', 'status' => 201]);
    }
    

    在你的路由函数中定义你的路由。

    【讨论】:

      猜你喜欢
      • 2014-05-29
      • 2021-08-25
      • 1970-01-01
      • 2015-04-27
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      相关资源
      最近更新 更多