我正在尝试在laravel 5.1中发送ajax请求。但我不能得到ajax请求。它始终是HTTP请求。
我有一个html表单
<form role="form" method="POST" action="/admin/save-drug" id="add_drug">
<label for="drugs_name">Drug Name <span class="text-danger">*</span></label>
<input type="text" class="form-control" name="drugs_name" id="drugs_name">
<label for="drugs_name">Drug Name <span class="text-danger">*</span></label>
<input type="text" class="form-control" name="drugs_name" id="drugs_name">
<button type="submit" id="save_drug" class="btn btn-default waves-effect waves-light btn-md">
</form>
我使用ajax
$(document).ready(function(){
$('#add_drug').submit(function (){
$.ajax({
url: './admin/save-drug',
type: 'POST',
data : { 'drugs_name':$('input[name=drugs_name]').val()},
success: function(data){
alert(data)
}
});
});
});
我的控制器
public function saveDrug(Request $request){
if($request->ajax()){
return "AJAX";
}else{
return "HTTP";
}
}
它总是返回“HTTP” 我的代码有什么问题???
答案 0 :(得分:1)
从我在您的代码中看到的内容来看,没有任何内容可以像浏览器一样停止提交表单。
我的猜测是,如果您打开检查器,打开保存网络日志并提交表单,您将看到您的AJAX请求和标准表单提交。
我认为您可能需要阻止表单提交事件,以便它不会冒泡,允许您的AJAX运行,但停止表单正常提交。
以下是JavaScript的样子:
$(document).ready(function(){
$('#add_drug').submit(function (e) {
e.preventDefault(); //Stop the form from submitting
$.ajax({
url: './admin/save-drug',
type: 'POST',
data : { 'drugs_name':$('input[name=drugs_name]').val()},
success: function(data){
alert(data)
}
});
});
});
答案 1 :(得分:0)
试试这个: 添加csrf_token
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var token='{{csrf_token()}}';
$('#add_drug').submit(function (){
$.ajax({
url: './admin/save-drug',
type: 'POST',
data : { 'drugs_name':$('input[name=drugs_name]').val(),_token:token},
success: function(data){
alert(data)
}
});
return false;
});
});
</script>