javascript调用url带有参数时,返回错误“不允许使用方法”。
HTML
1.- <a href="{{ URL::to('acceso', ['option'=>'1']) }}">Acceso</a>
2.- <a href="{{ URL('acceso') }}">Acceso 2</a>
第一个选项返回错误。第二种选择效果很好。
这是路线:
Route::get('/acceso/{option?}', function ($option = '') {
return view('acceso_Usuario')->with('option', $option);
});
Route::post('call', 'example_Controller@function_example');
这是控制器:
class example_Controller extends Controller
{
public function function_example(Request $request)
{
if ($request->ajax()) {
return response()->json([
]);
}
}
}
这是JavaScript
$(document).ready(function() {
var route = "call";
var token = $("#token").val();
var parameters=
{
};
$.ajax({
url: route,
headers: {'X-CSRF-TOKEN': token},
type: 'post',
dataType: 'json',
data: parameters,
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
},
error: function (msj) {
alert("Error Ajax);
}
});
});
可以帮助我的人! :)
答案 0 :(得分:1)
您的JavaScript正在发出POST请求,但匹配的路由被定义为仅允许GET,HEAD请求(with Route::get()
)。
答案 1 :(得分:1)
更改您的Ajax网址
var url = '{{url("call")}}';
在post方法中以这种方式传递csrf令牌
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
答案 2 :(得分:0)
将路线更改为
var route = '{{url("call")}}';
这将为您的路线生成一个绝对URL
答案 3 :(得分:0)
已经解决!我之所以解释自己的问题,是因为我喜欢在其他同事遇到相同问题时总是能解决问题。
问题在于,向URL添加参数会更改javascript文件的根目录。我尝试过的解决方案是“动态地”引入网站的根目录,这样Ajax会正确查找该功能。
$(document).ready(function() {
**var currentDirectory = window.location.href;**
**var rootDirectory = currentDirectory.substring(0, currentDirectory .indexOf("public") + 6);**
**var route = rootDirectory + "/call";**
var token = $("#token").val();
var parameters=
{
};
$.ajax({
url: route,
headers: {'X-CSRF-TOKEN': token},
type: 'post',
dataType: 'json',
data: parameters,
contentType: 'application/x-www-form-urlencoded',
success: function (data) {
},
error: function (msj) {
alert("Error Ajax);
}
});
});
谢谢大家的帮助! :)