如何在$ ajax中使用laravel url和路由助手(js文件)

时间:2018-10-23 13:43:46

标签: jquery ajax laravel

如何翻译此类网址

http://localhost/event/add

但是我提交表格时总是这样

http://localhost/%7B%7B%20url('event/add')%20%7D%7D

我的js代码是

 $.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type: 'POST',
                url: "{{ url('event/add') }}",
                data: form,
                dataType: "json",
                success: function (data) {
                    console.log("yes :- " + JSON.stringify(data));
                 }
        },'json');

我的web.php文件

Route::post('/event/add','eventController@create')->name('event.Add');

3 个答案:

答案 0 :(得分:1)

除非js代码位于laravel刀片视图文件中,否则您不能在js文件中调用laravel代码。

因此要调用laravel代码,是将它们作为html标签属性传递给视图,然后在js文件中使用javascript进行调用

即myview.blade.php

<input type="hidden" id="myurl" url="{{url('event/add')}}" />

然后在您的js文件中

var myurl = $('#myurl").attr('url');
$.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type: 'POST',
                url: myurl,
                data: form,
                dataType: "json",
                success: function (data) {
                    console.log("yes :- " + JSON.stringify(data));
                 }
        },'json');

答案 1 :(得分:0)

尝试使用此示例

$.ajaxSetup({
       headers: {
           'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
       }
  });

$url = '{{url('event/add')}}';

$.ajax({
    type:'POST',
    url: $url,
    success:function(data) {
        $("#msg").html(data.msg);
    }
});

答案 2 :(得分:0)

JavaScript文件无法呈现php / blade代码。由于无法在.js文件中解析,因此无法在.js文件中使用。因此,您可以使用一些技巧通过刀片获取呈现/翻译的网址,如下所示。

在以下示例中,我假设您的blade文件的名称为view.blade.php,而javascript文件的名称为script.js

第一个解决方案:

view.blade.php中编写以下代码

<script>
   var add_event_url = "{{ url('event/add') }}"
</script>

在脚本标签下添加您的js文件。

然后,您可以在JavaScript文件中使用add_event_url变量 在script.js文件中

$.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type: 'POST',
                url: add_event_url, //http://localhost/event/add
                data: form,
                dataType: "json",
                success: function (data) {
                    console.log("yes :- " + JSON.stringify(data));
                 }
        },'json');

第二个解决方案: 您可以在HTML元素属性中使用route或url helper,然后单击即可获得解析的url,如下所示 在您的view.blade.php文件中

<a href="{{ url('event/create') }}" id="create_event">Add Event</a>

script.js文件中

$(document).on('click', '#create_event', function(){
    var add_event_url = $(this).attr('href');
    $.ajax({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                },
                type: 'POST',
                url: add_event_url, //http://localhost/event/add
                data: form,
                dataType: "json",
                success: function (data) {
                    console.log("yes :- " + JSON.stringify(data));
                 }
        },'json');

});

我希望它会有所帮助。