我无法通过$ request-> ajax(),我可以获得和dd($ data),但它总是返回false,我的代码有什么问题。任何人都可以帮助我?感谢。
Route::post('test', 'BlogController@test');
<form method="POST" id="form-ajax" action="/test">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="name1">Name1</label>
<input type="text" class="form-control" name="name1" id="name1">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary" id="test_btn">
Submit
</button>
</div>
</form>
public function test(Request $request)
{
$data = $request->input('name1');
if ($request->ajax()) {
$response = array(
'name' => $data,
'status' => 'success',
);
return response()->json($response);
} else
return response()->json(['msg' => 'false']);
}
$(document).ready(function() {
$('#test_btn').click(function() {
$.ajax({
url: '/test',
type: 'post',
data: {'_token': $('input[name=_token]').val(), 'name1': $('input[name=name1]').val()},
success: function(data) {
console.log(data);
},
headers: {'X-Requested-With': 'XMLHttpRequest'},
dataType: 'json'
});
});
});
答案 0 :(得分:0)
如果你深入研究代码,你会发现$ request-&gt; ajax()方法依赖于这个逻辑(参见vendor / symfony / http-foundation / Request.php):
$this->headers->get('X-Requested-With');
jQuery默认设置此标头。您应该做的第一个操作 - 在浏览器的Developer Tools中查看您的AJAX调用。您可以在那里看到完整的HTTP标头 - 标头是否包含此X-Requested-With行?
如果它不存在(不太可能,但谁知道),您可以手动将其添加到您的AJAX数据对象,例如:&#34; X-Requested-With&#34;:&#34; XMLHttpRequest&# 34。
另外,我建议更换$ data = $ request-&gt; get(&#39; name1&#39;);与
$data = $request->input('name1');
获取输入变量的更正确的方法(get()方法甚至不存在于文档中)。