我正在尝试使用Laravel 5.5中的按钮发出AJAX请求。控制台返回POST:500(内部服务器错误)。
我的Javascript代码:
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#insertForm').on('submit', function(e){
e.preventDefault();
var data = $(this).serialize();
var url = $(this).attr('action');
var post = $(this).attr('method');
$.ajax({
type: post,
url: url,
data: data,
dataType: 'json',
success:function(data)
{
console.log(data)
}
})
})
</script>
我的HTML表单代码:
<form action="{{ URL::to('add') }}" class="translation-form" method="POST" id="insertForm">
<div class="language-area">
<textarea class="form-control wow fadeIn" data-wow-duration="0.5s" name="words" id="lang-input" rows="10"></textarea>
</div>
<p class="upload-info wow fadeInDown" data-wow-duration="0.5s" data-wow-delay="0.3s">
Add words from file
<input type="file" name="file-1" id="file-1" class="inputfile inputfile-1" data-multiple-caption="{count} files selected" multiple />
<label for="file-1"><span>"doc" or "docx"</span></label>
</p>
<div class="clearfix"></div>
<div class="text-center translate-option">
<button type="submit" class="btn btn-green btn-instant-translate wow fadeIn" data-wow-duration="0.5s">
Add
</button>
</div>
</form>
我的AjaxController:
class AjaxController extends Controller
{
public function store(Request $request)
{
if($request->$ajax())
{
return "True request!";
}
}
}
我的路线:
Route::post('/add', ['uses'=>'AjaxController@store', 'as'=>'ajaxAdd']);
为什么会出现这样的错误?当我尝试在没有使用AjaxController使用请求的控制台中输出数据时,Ajax工作。
答案 0 :(得分:5)
服务器以500响应,因为在ajax调用期间会引发一些异常。我猜它是因为控制器中的代码,控制器代码应该是这样的
if($request->ajax())
{
return "True request!";
}
编辑以响应ajax请求,您可以使用响应对象和http响应代码,而不是返回纯文本,以便您可以知道ajax调用的确切状态,
答案 1 :(得分:4)
$
$request->$ajax()
class AjaxController extends Controller
{
public function store(Request $request)
{
if($request->ajax())
{
return "True request!";
}
}
}