【问题标题】:Submitted data doesn't get stored in database and i get redirected after submit提交的数据没有存储在数据库中,提交后我被重定向
【发布时间】:2016-12-01 13:49:49
【问题描述】:

嗨,我正在研究 php Laravel,我正在尝试从模式提交数据,我希望它提交成功后关闭模式,而不是重定向。但两者都不起作用,所以提交后我被重定向,提交后,数据库中没有添加数据。

所以在表格中填写数据后,按提交,它会将我重定向到\ 页面,我检查数据库,没有添加任何内容。但是我可以从中提取数据,所以它不是连接或配置。

我想在提交后留在同一页面上,只需关闭模式(稍后我会显示成功)。

这是我的模态表单:

<div class="modal fade" id="myModal" role="dialog">
   <div class="modal-body">  

        <form id="eventForm" method="post" action="createEvent">
            //a couple inputs
            //a submit button
        </form>
   </div
</div>

这是处理数据提交和非重定向的jQuery

$(document).ready(function() {

$('#eventForm')
      .formValidation({
           framework: 'bootstrap',
          //icon,fields validation
       })            
      .on('success.form.bv', function (e) {
       e.preventDefault();
          var $form = $("#eventForm"),
          url = $form.attr('action');
           $.post(url, $form.serialize()).done(function () {
               $("#myModal").dialog("close");
            });
            });
            });

我的路线

 route::post('createEvent' , 'EventsController@store');

处理请求的控制器

public function store(Request $request)
{
    $event= new event();

    //retrieving the data here

    $event->name = $request->name;
    $event->description = $request->description;
    $event->ending_date = $request->ending_date;
    $event->starting_date = $request->starting_date;
    $event->assigned_to = $request->assigned_to;
    $event->save();
}

命名空间和用途是正确的,但如果你愿意,我可以发布它们。 有什么建议吗?

更新

在开发者工具中,我检查了网络部分,我发现请求正在发送,但只是302重定向,并且javascript代码没有执行,所以当我点击提交按钮时它正在提交。

尝试控制台记录javascript代码,让我意识到它甚至没有被执行,但仍然提交,没有到达页面是另一个需要解决的问题。

【问题讨论】:

  • 您在开发者工具的网络标签中看到了什么? ajax 请求是否正确发出?返回值是多少?

标签: php jquery laravel-5


【解决方案1】:

你有 CSRF 令牌检查吗?如果是这样,请在发布时包含您的令牌,如下所示:

<meta name="csrf-token" content="{{ csrf_token() }}">

并在表单中作为这样的字段:

<form method="POST" action="/profile">

{{ csrf_field() }}
...
</form>

或者通过排除你的路由被 csrf 检查,像这样(检查你的 VerifyCsrToken.php)

class VerifyCsrfToken extends BaseVerifier
{
  /**
   * The URIs that should be excluded from CSRF verification.
   *
   * @var array
   */
  protected $except = [
      'stripe/*',
  ];
}

检查这些Laravel Docs 他们应该会向您解释更多。

当你说它总是重定向到\ 这意味着,它检查是否检查了你是否登录,因为它无法检查 csrf 令牌(你没有包括)。

更新

关于提交,我不知道为什么它没有停止提交,但我试过了

$("#formi_id").submit(function(e){
return false;
});

或查看working example。 希望这会有所帮助。

【讨论】:

  • 谢谢你帮我解决了这个问题,它救了我!虽然我有一个重复的帖子,第二个有 500 个内部服务器,对此有什么想法吗?
猜你喜欢
  • 2015-01-27
  • 2015-01-20
  • 1970-01-01
  • 2021-09-20
  • 2019-10-30
  • 1970-01-01
  • 2018-11-19
  • 2020-08-18
  • 1970-01-01
相关资源
最近更新 更多