加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – 使用ajax将表单数据发布到控制器操作(laravel)时遇到麻烦

发布时间:2020-12-14 19:40:36 所属栏目:大数据 来源:网络整理
导读:路线: Route::post('admin/cms/create','CmsController@createmenu'); 控制者的行动: public function createmenu(Request $request){ $menu = new menu; $this-validate($request,[ 'name'='required','s_title'='required_if:s_exist,1','s_desc'='requi
路线:

Route::post('admin/cms/create','CmsController@createmenu');

控制者的行动:

public function createmenu(Request $request){
        $menu = new menu;
        $this->validate($request,[
            'name'=>'required','s_title'=>'required_if:s_exist,1','s_desc'=>'required_if:s_exist,'s_path'=>'required_if:s_exist,'category'=>'required'
        ]);
        $path=$request->file('s_path')->store('img/slideshow');
        $menu::create([
            'name'=>$request->name,'s_exist'=>$request->s_exist,'s_title'=>$request->s_title,'s_desc'=>$request->s_desc,'s_path'=>$path,'category'=>$request->category
        ]);
        return redirect('admin/cms');
    }

Ajax(jquery):

$("#f_ins_menu").on("submit",function(e){
    e.preventDefault();
    var data={};
    $.ajax({
        type:"POST",//url:$(this).attr("action"),//I would like it to work with this dynamic url
        url:"cms/create",//this file is inside the folder admin
        //I also tried without the map function
        data:$(this).serializeArray().map(function(x){data[x.name] = x.value;}),contentType:false,cache:false,processData:false,});
});

createmenu动作在没有ajax的情况下工作

我有另一个使用Ajax的操作,它可以工作,但区别在于:在那个操作中我没有传递Request $请求,实际上我没有传递任何东西.

我尝试过本机PHP,它的工作原理.请注意,我添加了contentType:false,cache:false,processData:false,因为我还传递了一个文件.

我试图死和愚蠢(dd)$request参数,我得到一个巨大的代码块,我认为一个类,所以我的想法是Request $request param没有得到我通过ajax传递的数据

是的,我在CSRF_FIELD中加入了我在这里找到的元标记技巧https://laravel.com/docs/5.4/csrf

有人帮助我至少看到我传递的数据是数组格式或json格式,无所谓.

我不希望你们查看所有代码.你能给我这个功能/动作的正确版本吗?

public function createmenu(Request $request){
    return dd($request); //I've tried this but it returns alot of code in console.log when I do the success:function()
}

我只是想看看我通过的数据,至少,我可以从那里开始.

编辑:

忘了提到使用validate方法,HTTP响应是422,没有验证,HTTP响应是500

编辑2:

好的,所以在响应ajax时不要使用die和dumb(dd()),只需使用return和一些数据.为了访问ajax的请求,我能够,感谢@ Lorav的评论:

data:{data:$(this).serialize()},

$data = $request->data;

所以它不是Request类问题,我的语法错了.

解决方法

使用$request-> all()将构造数据作为数组.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读