当前位置: 首页 > 知识库问答 >
问题:

使用带有ajax调用的资源控制器的存储方法将数据插入数据库

谢飞舟
2023-03-14

在我的laravel项目中,我通过资源控制器插入数据。但是现在我想使用ajax请求,使用相同的路由和相同的资源控制器方法来插入我如何发送url以及如何向它发送表单数据。

路线

Route::resource('/makes', 'MakeController');

控制器

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Http\Request;
//----models--------
use App\Make;
class Makecontroller extends Controller
{
    public function index()
    {
        return View("pagination_common.index");
    }

    public function create()
    {

    }
    public function store(Request $request)
    {
        $input['name'] = Input::get('name');
        $rules = array('name' => "unique:makes,name");
        $validator = Validator::make($input, $rules);
        if ($validator->fails()) { 
            return Redirect::back()->with('alert-danger',"Make Name already exist.")->withInput();
        }
        else{
            $make = new Make();
            $make_detail = $make->add_make($request);
            $data['name'] = $request->name;
            $make = make::find($make_detail['id']);
            activity('create')->performedOn($make)->log('');
            return redirect('/makes')->with('alert-success', 'Make Created successfully.');
        }
    }
    public function show($id)
    {

    }    
    public function edit($id)
    {

    }    
    public function update(Request $req, $id)
    {

    }
    public function destroy($id)
    {

    }
}

模型

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\softDeletes;
use DB;
class Make extends Model
{
    use SoftDeletes;
    public function add_make($req)
    {
        $this->name = $req['name'];
        $this->save();
        return ['id' => $this->id];
    }
    public function edit_make($req,$id)
    {
        $make = $this->find($id);
        $make->name = $req->name;
        $make->save();
    }
    public function make_detail($id)
    {
        $client = DB::select('select * from makes WHERE id=:id',['id'=>$id]);
        return $client;
    }
}

添加表单div

<div class="modal" id="add_item">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
                <h4 class="modal-title">Add Make</h4>
            </div>
            {{ Form::open(array('class' => 'form-horizontal form-validate-jquery','id' => 'add_item_form')) }}
            {{ Form:: hidden('model', "make","" ) }}
            <div class="modal-body">
                <fieldset class="content-group">
                    <legend class="text-bold"></legend>
                        <div class="form-group">
                            <label class="control-label col-lg-3">Name: <span class="text-danger">*</span></label>
                            <div class="col-lg-9">{{ Form:: text('name', null, array('class' => 'form-control', 'required' => '','placeholder' => 'name', 'maxlength' => '50')) }}</div>
                        </div>
                </fieldset>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-sm btn-primary" id="item-add-btn" data-resource="faq" onclick="add_item_common('make','Make')" >Submit</button>
                <button type="button" class="btn btn-sm btn-default" data-dismiss="modal">Cancel</button>
            </div>
            {{ Form::close() }}
        </div>
    </div>
</div>

ajax函数的js代码

function add_item_common(model,item)
{
    var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
    var objectResult = $('#add_item_form').serializeArray();
    $.ajax({
           type: "POST",
           url: "makes",
           dataType: 'json',
           data: {
               _token: CSRF_TOKEN,
               fields: objectResult
           },
           success: function (data) {
               console.log(data);
               if(data=='success')
               {
                   var page = $(".pagination .active span").html();
                   ajaxLoad('{{Request::segment(1)}}?page='+page);
                   $('#delete_confirm').modal('hide');
                    var add_success = '<div class="alert alert-success"><button type="button" class="close" data-dismiss="alert"><span>×</span><span class="sr-only">Close</span></button>'+model+' '+item+' added successfully.</div>';   
                    $(".content").prepend(add_success);
                    setTimeout(function(){ $(".alert-success").remove(); }, 5000);
               }
           }
    });  

}

共有2个答案

熊哲圣
2023-03-14

用以下代码替换ajax代码。

 $.ajax({
          type: "POST",
          url: "makes",
          data:$("#add_item_form").serialize(),
          success: function (data) {
              console.log(data);
          }
   });
邢同
2023-03-14

删除数据类型:'json',并将数据更改为数据:$(“#添加项目_表单”)。序列化()

应该这样做。

 类似资料:
  • 如果我打电话: 它给出了方法的结果 但是现在我需要从调用这个方法(JPararePository扩展了这个接口) 为了调用EmployeeRepository作为restendpoint,我给EmployeeRepository编写了一些函数。 但我得到了一个错误:

  • 问题内容: 我使用Google Maps API制作了一个非常简单的页面,其中有几个字段,用户将在其中放置一些数据。看起来像- http://aiworker2.usask.ca/marker_field_db.html 我要做的是使用javascript / Ajax将数据存储到MySQL数据库中。我发现了几个使用Jquery的示例。我是这个javascript / Ajax / Jquery平

  • 下面是我的代码和我到目前为止所做的事情。 如何在单击#OrderSave按钮后使用ajax将表中的所有数据插入数据库? $(“#code”).bind(“blur keypress”,function(event){event.preventdefault();if(event.keycode===13 event.type=='blur'){var vals=$('#code').val();$

  • 我是laravel的新手,当我使用单击函数提交表单时出现了一些问题。ajax jquery controller不会将数据保存到数据库,每次响应时都会使用整个html文件。请帮帮我。 关于标题的一些信息 请求URL:http://akshay.laravel/patient1?fname=asdknkl 状态代码:200 OK 远程地址:[::1]:80 推荐人策略:降级时无推荐人 缓存控制:无缓

  • 问题内容: 如何将ID从此Ajax调用传递给TestController getAjax()函数?当我打电话时,网址是testUrl?id = 1 TestController.php 问题答案: 最后,我只是将参数添加到Route :: get()以及ajax url调用中。我在getAjax()函数中将$ _POST [‘id’]更改为$ _GET [‘id’],这使我的回复 TestCont

  • 我有一个Vuex存储,它包含大约30个字段,在过去的两天里,我一直在试图找出如何在将其传递到AJAX post方法之前正确地收集它。我知道Vuex属性是反应性的,这可能会导致问题。我一直在运行测试以使这个该死的东西正确地填充我的Asp.Net控制器,下面是我的发现。 下面的日志显示了AJAX调用前后的情况。 我的硬编码对象工作正常,但这只是出于测试目的: 我的下一个尝试是直接将store.stat