javascript - Laravel - 如何包含外部 JS 文件(包含 Ajax )
问题描述
我使用 ajax 发布我选择的值。它适用于以下代码。我想将jvascript文件与index.blade.php 分开。
网页.php
Route::get('Homepage', function (){
return view('frontend.index');
});
Route::post('Homepage/filter', 'Frontend\ImgListController@filter')
->name('Homepage.filter');
控制器
function filter(Request $request)
{
$get_Model = $request->get('Model');
Log::debug($get_Model);
}
如果我有如下所示的“查看”代码,则可以将所选值正确发布到 url:“{{ route('Homepage.filter') }}”。
index.blade.php
<html>
<head></head>
<body>
<div class="form-group">
<select name="Model" id="Model">
<option value="">Select Model</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<button class="btn" onclick="Fun();">submit</button>
</div>
{{ csrf_field() }}
<script src="{{ asset('jquery/jquery.min.js') }}"></script>
</body>
</html>
<script>
function Fun() {
if ($('#Model').val() != '') {
var model_value = $('#Model').val();
$.ajax({
url: "{{ route('Homepage.filter') }}",
type: "POST",
data: {
Model: model_value,
_token: '{{csrf_token()}}'
},
success: function (result) {
//
}
})
}
}
</script>
但是,当我尝试将其添加<script type="text/javascript" src="{{ URL::asset('js/jquery.js') }}"></script>
到index.blade.php中,并且独立于 jvascript 文件(public\js\JS.js)之外。我会在下面收到错误消息。
POST http://localhost:8888/%7B%7B%20route ('Homepage.filter')%20%7D%7D 404(未找到)
index.blade.php (已修改,并且某处错误)
<html>
<head></head>
<body>
<div class="form-group">
<select name="Model" id="Model">
<option value="">Select Model</option>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
<button class="btn" onclick="Fun();">submit</button>
</div>
{{ csrf_field() }}
<script src="{{ asset('jquery/jquery.min.js') }}"></script>
<script type="text/javascript" src="{{ URL::asset('js/JS.js') }}"></script>
</body>
</html>
javascript
function Fun() {
if ($('#Model').val() != '') {
var model_value = $('#Model').val();
$.ajax({
url: "{{ route('Homepage.filter') }}",
type: "POST",
data: {
Model: model_value,
_token: '{{csrf_token()}}'
},
success: function (result) {
//
}
})
}
}
路由{{ route('Homepage.filter') }}错了?还是别的什么?我能做些什么来纠正它?谢谢!
解决方案
.js
您不能在文件中编写 laravel 刀片语法。
所以你不能为ajax url提供直接的路由名称
你可以直接把路由的 URL 称为这个。
并用于传递令牌数据,
只需将令牌放在 html 头部的元标记中
<meta name="csrf-token" content="{{ csrf_token() }}">
然后你可以在你的js中附加令牌数据
function Fun() {
if ($('#Model').val() != '') {
var model_value = $('#Model').val();
var token = $('meta[name="csrf_token"]').attr('content'),
$.ajax({
url: "/Homepage/filter",
type: "POST",
data: {
Model: model_value,
_token: token
},
success: function (result) {
//
}
})
}
}
推荐阅读
- java - Jenkins 和 Nexus:如何上传 javadoc 和源代码?
- linux - Linux上的VALA中带有图标、文本和两个按钮的简单对话框(基本操作系统)
- filefilter - 尝试使用 FileFilter 时出现 java.lang.NoClassDeffoundError
- python - 甲板洗牌算法不够“人性化”
- ajax - 如何将 formcollection 转换为模型 ins ASP.NET MVC
- c# - 将 IAsyncEnumerable 与 Dapper 一起使用
- flutter - 有没有办法在 Flutter 中打开抽屉后立即隐藏状态栏?
- firebase - 颤振:CachedNetworkImage 不缓存图像
- ios - 设置根视图控制器时,我可以保留模态呈现的视图控制器吗?
- javascript - 当 map 函数在代码中时,它返回 undefined,当 console.log 它返回一个空对象和一个数据。我只想要数据