laravel5.1 处理ajax数据

有一个json数据,前台通过ajax提交给controller,小白不知道怎么在controller的方法中获取到json数据

    <script>
        $(document).ready(function () {
            $("#singerarea").change(function () {
                $.ajax({
                    type: 'POST',
                    url: '/ajax',
                    data:'{_token:<?php echo csrf_token() ?>,option:$("#singerarea").val()}',
                    dataType: 'json',
                    success: function (data) {
                        alert(data.msg);
                    },
                    error: function () {
                        alert("error")
                    }
                });
            });
        })
    </script>
<div id="title" style="margin-top: 30px">
            <p>查询系统</p>
            <select name="singerarea" style="margin:20px auto;" id="singerarea">
                <option value="0">请选择</option>
                <option value="1">啊啊啊</option>
                <option value="2">呵呵哒</option>
            </select>
        </div>

问怎么在控制器中获取到ajax 中data的option的值,求指导

阅读 5.3k
5 个回答
   <script>
        $(document).ready(function () {
            $("#singerarea").change(function () {
                $.ajax({
                    type: 'POST',
                    url: '/ajax',
                   /*这个地方有问题 下面这一行*/ 
                  // data:'{_token:<?php echo csrf_token() ?>,option:$("#singerarea").val()}',
                  //下面这样才是正确的
                    data:{'_token':'<?php echo csrf_token() ?>','option':$("#singerarea").val()},
                    dataType: 'json',
                    success: function (data) {
                        alert(data.msg);
                    },
                    error: function () {
                        alert("error")
                    }
                });
            });
        })
    </script>

你写的data里面我Post到后台:

 data:'{_token:<?php echo csrf_token() ?>,option:$("#singerarea").val()}',

把_token:<?php echo csrf_token() ?>,option:$("#singerarea").val()当做整个键...然后值为空..

你可以自己试试用$request->all();方法试试看是不是这么回事...

Ajax和表单POST有什么区别??

只是装X的无刷新提交而已...

在后台接收层面上没区别~

手册:https://laravel.com/docs/5.4/...

图片描述

额,csrf_token不需要那样写的,如下、
$.ajaxSetup({

headers: { 'X-CSRF-TOKEN' : '{{ csrf_token() }}' }

}); 会在每次提交表单的时候,自动帮你补上。
还有在controller,若要获取前端传过来的json数据{"sex":"male"}、那么可以用$request->input ("sex")即可,$request用方法注入即可获得。

这和form不是一样吗?

一样的啊,不过提交的时候要加一个_token,在控制器中接收数据时,直接用'$request->key'就行了,你可以先用'dd'打印所有的参数'$request->all'看看

这得先学学http和javascript基础

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题