在我的laravel软件包中,路由不起作用,它显示了调试器中跟随错误的路由
Request URL: http://localhost:8000/%7B%7B%20route('contact')%20%7D%7D
但是我的路线如下
Route::group(['namespace' => 'ayazdev\Contact\Http\Controllers'], function(){
Route::get('contact', 'ContactController@index')->name('contact');
Route::post('contact', 'ContactController@send')->name('sendForm');
});
以下是我呼叫路线的地方
$(function(){
$("#contact-form").submit(function(e) {
var form = $(this);
$.ajax({
type: "POST",
url: "{{ route('contact') }}",
data: form.serialize(),
success: function(data)
{
alert(data);
}
});
e.preventDefault();
});
});
如果以上详细信息不足以使您理解,那么您可以在github上进行检查。
有人能指导我现在为什么会工作吗,我将不胜感激。谢谢
答案 0 :(得分:6)
花括号是Laravel Blade视图的一部分,但是您正在a JavaScript file中使用它。 Laravel不会解析此代码,因此您不能在此处使用php函数。
如果要在JavaScript代码中获取命名路由,则必须将其渲染为JavaScript变量,或使用Ziggy之类的包来获取JavaScript中的路由功能。
答案 1 :(得分:2)
如Jerodev所述,花括号来自Laravel Blade,您可能在Javascript文件中使用了它。您可以按如下方式将其移动到刀片文件中:
<script>
$(function(){
$("#contact-form").submit(function(e) {
var form = $(this);
$.ajax({
type: "POST",
url: "{{ route('contact') }}",
data: form.serialize(),
success: function(data)
{
alert(data);
}
});
e.preventDefault();
});
});
</script>
或者,如果您希望将其保存在一个单独的文件中,则可以使用仅包含有关该路线的信息的标签,并在执行操作时通过jQuery获取该标签:
// at the blade file add
<div id="routeToContact" data-route="{{ route('contact') }}">
// At the javascript file you can do the following
var route = $("#routeToContact").data('route');
$("#contact-form").submit(function(e) {
var form = $(this);
$.ajax({
type: "POST",
url: route,
data: form.serialize(),
success: function(data)
{
alert(data);
}
});
e.preventDefault();
});
根据个人喜好,我会选择第二种方法来使一切保持井井有条,但正如我妈妈一直说的:“选择您的心脏跳动的原因”
答案 2 :(得分:2)
您在一个简单的Javascript文件中使用Blade语法。
尝试执行以下操作:
$(function(){
$("#contact-form").submit(function(e) {
var form = $(this);
$.ajax({
type: "POST",
url: "<?= route('contact'); ?>",
data: form.serialize(),
success: function(data)
{
alert(data);
}
});
e.preventDefault();
});
});
这样,您就可以使用PHP本身来获取所需路由的地址。
在https://secure.php.net/manual/pt_BR/ini.core.php#ini.short-open-tag
中详细了解此罪过