[英]Laravel Ajax Post request returns empty array
因此,對於此分配,我需要在Laravel應用程序中為Dropify上傳器添加進度條。 但是它似乎無法根據鍵找到會話,當我用鍵打印會話時,它所做的只是返回一個空的Array()。
我的表格
{{ Form::open(array('url' => route('admin.templates.store'), 'files' => true, 'id' => 'myForm')) }}
<input type="hidden" value="myForm" name="{{ ini_get('session.upload_progress.name') }}">
<div class="form-group{{ $errors->has('title') ? ' has-error' : '' }}">
{{ Form::text('name', null, ['class' => 'form-control', 'required' => 'required']) }}
{{ Form::label('name', 'Template name', ['class' => 'control-label']) }}
<i class="bar"></i>
{{ $errors->first('name', '<p class="help-block">:message</p>') }}
</div>
<div class="form-group{{ $errors->has('title') ? ' has-error' : '' }}">
{{ Form::textarea('description', null, ['class' => 'form-control', 'required' => 'required', 'size' => '1x1']) }}
{{ Form::label('description', 'Template omschrijving', ['class' => 'control-label']) }}
<i class="bar"></i>
{{ $errors->first('description', '<p class="help-block">:message</p>') }}
</div>
<div class="form-group{{ $errors->has('number_of_screens') ? ' has-error' : '' }}">
{{ Form::number('number_of_screens', '1', ['class' => 'form-control', 'required' => 'required']) }}
{{ Form::label('number_of_screens', 'Aantal objecten', ['class' => 'control-label']) }}
<i class="bar"></i>
{{ $errors->first('number_of_screens', '<p class="help-block">:message</p>') }}
</div>
<div class="form-group{{ $errors->has('templatefile') ? ' has-error' : '' }}">
{{ Form::label('templateFile', 'Browse') }}
{{ Form::file('templateFile' , ['class' => 'dropify', 'data-allowed-file-extensions' => 'zip', 'required' => 'required']) }}
<div id="bar_blank">
<div id="bar_color"></div>
</div>
<div id="status"></div>
</div>
<div class="button-container">
{{ Form::submit('Uploaden', ['class' => 'button button-medium']) }}
</div>
{{ Form::close() }}
我的Ajax請求
$.ajax({
type: "POST",
url: "{{route('admin.templates.uploadprogress')}}",
data: {
"data": $('#myForm').serialize(),
"_token": "{{ csrf_token() }}",
},
success: function() {
console.log("Geodata sent");
}
});
我的路線
Route::post('/uploadprogress', 'AdminTemplateController@callSessionData')->name('uploadprogress');
我的控制器功能
public function callSessionData(Request $request){
$key = ini_get("session.upload_progress.prefix") . "myForm";
print_r($_SESSION);
if (!empty($_SESSION[$key])) {
$current = $_SESSION[$key]["bytes_processed"];
$total = $_SESSION[$key]["content_length"];
echo $current < $total ? ceil($current / $total * 100) : 100;
}
else {
echo 100;
}
}
我之前問過更多的人,他們似乎也不知道這個問題,因此,如果有人可以幫助我解決這個問題,我會很高興。
有兩件事,在您的ajax中,您不應該使用php,為什么不選擇已在表單中創建的路由,這樣會更干凈。
也許它什么也不返回,因為這不是您應該在laravel上訪問SESSION的方式。
您應該這樣做:
$yourSessionArray = $request->session()->get('key');
請在他們的文檔中了解如何將SESSION與laravel一起使用。
在網址中使用url: "{{route('/uploadprogress')}}",
在Route中使用Route::get()
而不是Route::post()
像:
Route::get('/uploadprogress', 'AdminTemplateController@callSessionData')->name('uploadprogress');
在Ajax中使用:
$.ajax({
type: "POST",
url: "/uploadprogress",
data: {
"data": $('#myForm').serialize(),
"_token": "{{ csrf_token() }}",
},
success: function()
{
console.log("Geodata sent");
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.