Laravel:为啥我的 ajax 请求返回“500(内部服务器错误)”?
Posted
技术标签:
【中文标题】Laravel:为啥我的 ajax 请求返回“500(内部服务器错误)”?【英文标题】:Laravel: Why my ajax request return "500 (Internal Server Error)"?Laravel:为什么我的 ajax 请求返回“500(内部服务器错误)”? 【发布时间】:2018-05-07 17:41:05 【问题描述】:我正在尝试使用 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 工作了。
【问题讨论】:
你在$request->$ajax()
的ajax之前有一个$
,这应该是$request->ajax()
。
【参考方案1】:
服务器以 500 响应,因为在 ajax 调用期间引发了一些异常。我猜是因为控制器中的代码,控制器代码应该是这样的
if($request->ajax())
return "True request!";
编辑:响应ajax请求,可以使用响应对象和http响应码,而不是返回纯文本,这样可以知道ajax调用的准确状态,
Doc link to laravel responses
Link to Http Response Codes
【讨论】:
【参考方案2】:你在$request->$ajax()
中找到了一个流氓$
class AjaxController extends Controller
public function store(Request $request)
if($request->ajax())
return "True request!";
【讨论】:
以上是关于Laravel:为啥我的 ajax 请求返回“500(内部服务器错误)”?的主要内容,如果未能解决你的问题,请参考以下文章
当我使用 ajax 发布请求时,为啥在我的 live laravel 项目中显示 404 和 405
我的 POST ajax 请求在 Laravel 控制器上返回 302