【发布时间】:2016-04-15 08:09:31
【问题描述】:
好吧,伙计们,我被这个难住了。我正在使用 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。他们都是空的。
任何帮助将不胜感激。谢谢!!
【问题讨论】:
-
产生任何错误?以及 Laravel 的确切版本...5.0、5.1、5.2?
-
你检查过你的路由文件了吗?检查请求是否正确路由到控制器,并检查您收到的错误消息。
-
我想您应该从表单中删除操作,因为您的表单有一个提交类型的按钮,因此您的表单直接发布数据而不是 ajax 调用
-
这段代码对我来说没有任何错误,它会准确地返回它应该是什么,除了是空的。我的路线运行良好。我为这个 Ajax 请求做了一个方法,它连接得很好。我也尝试从表单中删除 action 属性,但仍然得到相同的结果。
-
Laravel 的确切版本是什么?想知道,因为
>= 5.2具有应该封装此路由的 Web 中间件,因为您使用的是csrf_token()帮助器。