我在laravel中有一个表格。
我想使用ajax post request将数据发送到服务器。
laravel给我错误。我不知道为什么?
My view source url is : http://localhost/lily/public/search
(1/1)MethodNotAllowedHttpException
在RouteCollection.php(第251行)
在RouteCollection-> methodNotAllowed(array('GET','HEAD'))
RouteCollection.php中的(第238行)
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready( function () {
$("#submit").submit( function(){
var name = $("#name").val();
console.log(name);
$.ajax({
type: "POST",
url : "{{url('/search')}}",
data : name ,
success : function(data)
{
console.log(data)
},
error : function(error)
{
console.log(error)
}
});
});
});
</script>
<div class="col-md-6 offset-3">
<form id="submit" method="POST">
<input type="name" name="name" id="name">
<button type="submit" class="btn btn-success">search</button>
</form>
</div>
</body>
</html>
Route::post('/search/{name}', 'HomeController@in');
public function in() {
return json("fdfdfdfdfdf");
}
答案 0 :(得分:1)
您为/ search /参数定义了一条路线,但您的操作仅为&#39; / search&#39;。
删除路线中无用的{name}部分。或者使用{name?}
使其可选答案 1 :(得分:0)
在将路线定义更改为删除{name}
或将其设为可选{name?}
后,将CSRF令牌与请求一起传递,然后将data
更改为
$(document).ready(function() {
$("#submit").submit(function() {
e.preventDefault(); // Prevent the Default Form Submission
var name = $("#name").val();
console.log(name);
$.ajax({
type: "POST",
url: "{{ url('/search') }}",
data: {
name: name,
_token: "{{ csrf_token() }}"
},
success: function(data) {
console.log(data)
},
error: function(error) {
console.log(error)
}
});
});
});
输入类型应为text
,而不是{/ p>形式的name
<input type="text" name="name" id="name">
答案 2 :(得分:0)
因为您没有将CSRF令牌值添加为隐藏类型。
您必须将CSRF隐藏输入添加到表单。
<input type="hidden" name="_token" value="{{ csrf_token() }}" />