Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在laravel中使用ajax将数据保存到数据库而无需重新加载_Php_Html_Laravel_Http_Post - Fatal编程技术网

Php 在laravel中使用ajax将数据保存到数据库而无需重新加载

Php 在laravel中使用ajax将数据保存到数据库而无需重新加载,php,html,laravel,http,post,Php,Html,Laravel,Http,Post,我有一个表单,用户可以在其中插入多个输入字段,并使用ajax保存到数据库中 这是我的HTML表格 <form id="paramsForms" method="POST"> {{csrf_field()}} {{ method_field('POST') }} <div class="modal-body"> <div class="container h-100"> <div class

我有一个表单,用户可以在其中插入多个输入字段,并使用ajax保存到数据库中

这是我的HTML表格

<form id="paramsForms" method="POST">
    {{csrf_field()}}
    {{ method_field('POST') }}

    <div class="modal-body">
        <div class="container h-100">
            <div class="d-flex justify-content-center">

                <div class="card mt-5 col-md-12 animated bounceInDown myForm" id="multiple-container">
                    <div class="card-header">
                        <h4>Bidders Information</h4>
                    </div>
                    <div class="card-body" id="add_info">
                        <div id="dynamic_container">

                            <small id="bidder">Bidder 1</small>
                            <div class="input-group">
                                <div class="input-group-prepend">
                                    <span class="input-group-text br-15"><i class="fa fa-tags"></i></span>
                                </div>
                                <input type="text" placeholder="Bidders Name" name="bidders_name[]" class="form-control"/>
                            </div>
                            <div class="input-group mt-3">
                                <div class="input-group-prepend">
                                    <span class="input-group-text br-15"><i class="fa fa-tags"></i></span>
                                </div>
                                <input type="text" placeholder="atribute name" name="params_name[]"  class="form-control"/>
                                <input type="number" placeholder="atribute value" name="params_value[]" class="form-control"/>
                                <a class="btn btn-secondary btn-sm moreinput_field" id="add_more_input">
                                    <i class="fa fa-plus-circle"></i> 
                                </a>
                            </div>
                        </div>
                    </div>

                    <div class="card-footer" id="card-footer">
                        <a class="btn btn-success btn-sm" id="add_more"><i class="fa fa-plus-circle"></i> Add</a>
                        <!-- <button class="btn btn-success btn-sm float-right submit_btn"><i class="fas fa-arrow-alt-circle-right"></i> Submit</button> -->
                    </div>

                </div>


            </div>
        </dvi>
    </div>


    <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="submit" id="save" class="btn btn-primary">Save changes</button>
    </div>

</form>
这是我的路线设置

Route::get('/parameters', "ParameterController@index");
Route::post('parameters/store', 'ParameterController@store')->name('parameters.store');
这里是我的控制器中的存储功能,用于保存数据

public function store(Request $request)
{
    if($request->ajax())
    {
        $rules = array(
            'params_name.*'  => 'required',
            'params_value.*'  => 'required',
            'bidders_name.*' => 'required'
        );
        $error = Validator::make($request->all(), $rules);
        if($error->fails())
        {
            return response()->json([
                'error'  => $error->errors()->all()
            ]);
        }

        $params_name = $request->params_name;
        $params_value =$request->params_value;
        $bidders_name =$request->bidders_name;

        for($count = 0; $count < count($params_name); $count++)
        {
            $data = array(
                'params_name'   => $params_name[$count],
                'params_value'  => $params_value[$count],
                'bidders_name'  => $bidders_name[$count],

            );
            $insert_data[] = $data; 
        }

        Parameter::store($insert_data);
        return response()->json([
            'success'  => 'Data Added successfully.'
        ]);
    }
}
我尝试了其他人提供的大多数SO解决方案,但我仍然得到了错误


我的代码有什么错误?

更改您的路线顺序:

Route::post('parameters/store', 'ParameterController@store')->name('parameters.store');
Route::get('/parameters', "ParameterController@index");

您的jQuery帖子似乎不正确

尝试将
方法:“POST”
替换为
类型:“POST”

见:

此外,您不需要
{{method_field('POST')}}
它用于某些浏览器不支持的PUT、DELETE和PATCH请求。

对以下内容进行更改:

<form id="paramsForms" method="POST">
                        {{csrf_field()}}
                        {{ method_field('POST') }}

{{csrf_field()}}
{{method_field('POST')}


{{csrf_field()}}

试试看。另外,如果它不起作用,请运行
php artisan route:cache
以清除路由缓存。

只是猜测一下,但您是否尝试过不使用嵌套路由名称?或者,如果确实需要嵌套名称,至少可以尝试这样定义路由:

Route::prefix('parameters')->name('parameters')->group(function(){
路线::邮政('store','ParameterController@store')->名称('store');
路由::获取(“/”,“ParameterController@index");
});
请参见您应该添加的


您是否尝试将方法:“POST”更改为方法:“GET”,或者尝试在您的ajax和web.php上的路由上放置一个
/
正斜杠。至于ajax上的url,请尝试将其更改为
/parameters/store
@AlirezaSabahi为什么我要在使用POST时这样做?
{{method\u field('POST')}
将其从表单中删除。您已经在ajax的表单属性中传递了它。您的方法是post,因此它不是必需的。请尝试清除路由缓存
php artisan route:cache
,这无关紧要,因为它们具有不同的URI,一个具有
/store
,而另一个不起作用,第二,你能解释一下我为什么要这样做吗?我想你的缓存有问题。我完全不确定
方法
是否是
类型
的别名。多年没有接触过jQuery。
type
在较旧版本的jQuery中使用。较新的版本使用了
方法
。您能解释一下为什么我们需要在元标记上添加令牌吗?
Route::post('parameters/store', 'ParameterController@store')->name('parameters.store');
Route::get('/parameters', "ParameterController@index");
$.ajax({
  type: "POST",
  url: url,
  data: data,
  success: success,
  dataType: dataType
});
<form id="paramsForms" method="POST">
                        {{csrf_field()}}
                        {{ method_field('POST') }}
<form id="paramsForms">
                        {{csrf_field()}}