Laravel 5控制器不会从ajax表单接收数据

时间:2016-01-11 04:54:16

标签: jquery ajax laravel-5

好吧,伙计们,我对这个感到难过。我正在使用jQuery / Ajax向我的Laravel 5控制器提交表单(路由工作很好,没有问题)。除了表单中的数据外,控制器正在返回我期望的内容。

这是一些代码。

形式:

    <form action="/candidateajax/add/" enctype="multipart/form-data" method="post" accept-charset="utf-8" name="candidate" id="addcand">
        <input type="hidden" id="token" name="_token" value="{{ csrf_token() }}">
        <div>
        Name
        {!! Form::text('first_name', null, array('placeholder'=>'First Name')) !!}
        {!! Form::text('last_name', null, array('placeholder'=>'Last Name')) !!}
        </div>

        <div id="candimages">
        Image
        {!! Form::file('image', null) !!}
        </div>

        <div>
        Bio<br/>
        {!! Form::textarea('bio', null, array('placeholder'=>'Bio Text')) !!}
        </div>

        <div>
        Q&A<br/>
        {!! Form::textarea('qa', null, array('placeholder'=>'Q&A Text')) !!}
        </div>

        <div>
        Additional Info<br/>
        {!! Form::textarea('html', null, array('placeholder'=>'Additional Info Text')) !!}
        </div>

        <div>
        Party
        {!! Form::select('party', $parties) !!}
        </div>

        <div>
        <!--<button type="button" id="addcandbtn">Add Candidate</button>-->
        <button type="submit" id="addcandbtn">Add Candidate</button>
        </div>
        </form>

<div>
  Party
  {!! Form::select('party', $parties) !!}
</div>

<div>
    <!--<button type="button" id="addcandbtn">Add Candidate</button>-->
    <button type="submit" id="addcandbtn">Add Candidate</button>
</div>
</form>

的Javascript / jQuery的:

$("#addcand").on('submit', function(e){

        var dataser = $("#addcand").serialize();
        console.log(dataser); // Proves that the serialized form has data

        e.preventDefault();

        $.ajax( {
      url: '/candidateajax/add/',
            data: dataser,
      type:'POST',
            cache:false,
            dataType: 'json',
            enctype:'multipart/form-data',
      success:function(response){
        console.log(response);
      },
            error: function(jqXHR, textStatus, errorThrown){
                console.log(jqXHR.responseText);
            }
    });
    });

Laravel控制器:

public function createCandidateAjax(Request $request)
{
  $input = Input::all();
  return response()->json($input);
}

我已经尝试返回并同时转换$ input和$ request。他们都是空的。

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

好的,谢谢你的帮助。我发现我的ajax请求是作为GET请求收到的,而不是POST请求,即使Ajax方法/类型设置为POST并且表单操作设置为POST。当我删除尾随&#34; /&#34;从URL参数,它作为POST发送就好了并按预期工作。

抬头,根据对Laravel 5.1的ajax请求,我无法解释为什么Laravel 5.1不喜欢尾随&#34; /&#34;但是它没有。