我试图在一个控制器中获取请求数据,但是Laravel没有显示任何内容。在其他控制器中使用GET方法我可以很容易地做到这一点。
在这种情况下,我不能使用页面重定向,所以 AJAX 是我唯一的选择。
我已经搜索了整个stackoverflow,但没有找到任何工作。
我的代码:web.php
Route::post('adiciona_credito', [AdicionaCreditoController::class, 'post_credito'])->name('adiciona_credito.post');
AdicionaCreditoController.php
<?php
namespace App\Http\Controllers\MixVirtual;
use App\Http\Controllers\Controller;
use Exception;
use Illuminate\Http\Request;
class AdicionaCreditoController extends Controller {
public function post_credito(Request $request): array {
dd(request()->all()); // print the request
try {
// Saving data to the database.
$retorno['msg'] = 'success';
}
catch (Exception $e) {
$retorno['msg'] = $e->getMessage();
}
header('Content-type: application/json;charset=utf-8');
return $retorno;
}
}
ajax.js
document.getElementById('form_adiciona_credito').addEventListener('submit', function(event) {
event.preventDefault();
let headers = new Headers();
headers.append('X-CSRF-TOKEN', document.querySelector('[name="csrf-token"]').getAttribute('content'));
let options = {
method : 'POST',
headers: headers,
body : JSON.stringify({
credito : document.getElementById('credito').value,
justificativa: document.getElementById('justificativa').value
})
}
fetch('./adiciona_credito', options).then(function(response) {
if (!response.ok) {
// Treating errors
}
response.json().then(function(return) {
// AJAX callback
});
});
}
HTML
形式
<form id="form_adiciona_credito" method="post" action="{{route('adiciona_credito.post')}}">
@csrf
<div class="row">
<div class="col-12 my-1">
<input required type="number" class="form-control" id="credito" placeholder="Crédito para adicionar">
</div>
<div class="col-12 my-1">
<textarea required class="form-control" id="justificativa" placeholder="Justificativa"></textarea>
</div>
<div class="col-12 my-1">
<button class="btn btn-success float-end" id="btn_adiciona_credito">Add
</button>
</div>
</div>
</form>
浏览器网络选项卡屏幕截图:
1条答案
按热度按时间zvokhttg1#
经过长时间的搜索,我发现需要使用
request()->getContent();
来获取POST方法的主体参数。