[英]Laravel - How to include External JS file (contains Ajax )
我使用ajax發布我選擇的值。 使用以下代碼可以正常工作。 我想將jvascript文件與index.blade.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')}}”。
<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(未找到)
<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>
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提供直接的路由名稱
您可以將其稱為直接放置路線的網址。
對於通行證令牌數據,
只需將令牌放在html頭內的meta標記中
<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) {
//
}
})
}
}
您可以通過以下方式進行操作:
將以下行添加到您的主布局文件中。
@stack('scripts')
而不是放在索引文件末尾的腳本下面。
@push('scripts')
<script src="{{ asset('assets/js/JS.js')}}"></script>
@endpush
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.