gpt4 book ai didi

javascript - Laravel Ajax Input::all() 通过 FormData 发送时返回空

转载 作者:行者123 更新时间:2023-11-30 08:41:18 26 4
gpt4 key购买 nike

我正在使用 Laravel 4 构建应用程序,在某些时候我想通过模态(Bootstrap)添加一些模型,所以我需要 ajax 来发送我的消息,我已经在 Controller 中设置了我的路由和操作,然后我构建了使用 blade 形成标记,我已经编写了 ajax 代码,请求正常并且我通过 Input facade 检索输入,这里的问题是表单有一个文件输入,并且在使用 $('#formRub ') 序列化表单数据时。 serialize(),它无法处理文件输入,所以我必须使用 FromData 对象并在 ajax 请求中将 processData 和 contentType 设置为 false,请求已发送,但是当您访问 Input facade 时,我得到的是空数组! !

路线:

Route::post('/add', ['as' => 'rubrique.add.post', 'uses' => 'RubriquesController@ajaxaddpost']);

Controller :

class RubriquesController extends \BaseController {


public function ajaxaddpost(){
return dd(Input::all());
$v = Validator::make(Input::all(), Rubrique::$rules);
if($v->fails()){
return Response::json([
'fail' => true,
'errors' => $v->errors()->toArray()
]);
}
if(Input::hasFile('image'))
return Response::json(['success' => Input::file('image')]);

return Response::json(['fail' => 400]);
}

标记:

         {{ Form::open(['route' => 'rubrique.add.post', 'method' => 'post', 'files' => true, 'class' => 'form-horizontal', 'id' => 'rubForm']) }}
{{Form::label('name', 'Nom de la boutique :', ['class' => 'col-md-4 control-label'])}}
{{Form::text('name', null, ['class' => 'form-control', 'placeholder' => 'Entrer votre nom de boutique..'])}}

{{Form::label('desc', 'Description :', ['class' => 'col-md-4 control-label'])}}
{{Form::textarea('desc', null, ['class' => 'form-control', 'placeholder' => 'Enter votre e-mail..', 'rows' => '3'])}}



{{Form::label('image', 'Image :', ['class' => 'col-md-4 control-label'])}}
{{Form::file('image', ['class' => 'form-control', 'placeholder' => 'Enter votre e-mail..'])}}

{{Form::label('rubrique_id', 'Rubrique Parent :', ['class' => 'col-md-4 control-label'])}}
{{ Form::rubriques(0) }}

<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
{{Form::submit('Ajouter', ['class' => 'btn btn-primary', 'id' => 'sendRubrique']) }}

</div>
</div>
{{Form::close()}}

JS:

        $('#rubForm').submit(function(e){
e.preventDefault();
var $form = $( this ),
dataFrom = new FormData($form),
url = $form.attr( "action"),
method = $form.attr( "method" );

$.ajax({
url: url,
data: dataFrom,
type: method,
contentType: false,
processData: false
});
});

最佳答案

关键在您的 ajax 请求中。在 Controller 中你可以做任何你想做的事情。

var form = document.forms.namedItem("yourformname"); // high importance!, here you need change "yourformname" with the name of your form
var formdata = new FormData(form); // high importance!

$.ajax({
async: true,
type: "POST",
dataType: "json", // or html if you want...
contentType: false, // high importance!
url: '{{ action('yourController@postMethod') }}', // you need change it.
data: formdata, // high importance!
processData: false, // high importance!
success: function (data) {

//do thing with data....

},
timeout: 10000
});

关于javascript - Laravel Ajax Input::all() 通过 FormData 发送时返回空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26158526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com