Laravel Ajax无法在url中传递参数,但可以使用常量

时间:2019-08-07 11:39:17

标签: ajax laravel delete-method

我正在写一个ajax,它在url包含常量时有效,但在url包含变量时不起作用,因为它不会被实际值代替。

 url: "{{ route('layers.destroy',['layer' => 50])}}",

如果我使用一个值,那么说50而不是layer_id,那么它可以工作!!!

DELETE | admin/layers/{layer} | layers.destroy   

这是我尝试访问的路线:

 url: "{{ route('layers.destroy',['layer' => "+layer_id+"])}}", 

如果我未在网址中发送图层参数,则会收到以下错误

  

message:“缺少[Route:layers.destroy]所需的参数   [URI:admin / layers / {layer}]。 (视图:   /var/www/laravelapp/resources/views/layers.blade.php)“

为什么layer_id在这里

version: '2'

services:
  mariadb:
    image: 'bitnami/mariadb:10.1'
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
      - MARIADB_USER=my_user
      - MARIADB_DATABASE=my_database
      - MARIADB_PASSWORD=my_password
    ports:
      - 9990:3306
    volumes:
      - /home/haaiee/Projects/Docker/decode_appdata/database/mariadb_data:/bitnami/mariadb
  myapp:
    tty: true
    image: bitnami/laravel:5-debian-9
    environment:
      - DB_HOST=mariadb
      - DB_USERNAME=my_user
      - DB_DATABASE=my_database
      - DB_PASSWORD=my_password
    depends_on:
      - mariadb
    ports:
      - 3000:3000
    volumes:
      - ./:/app

不是用实际值代替吗?

2 个答案:

答案 0 :(得分:0)

当您像['layer' => "+layer_id+"]一样书写时,js变量不起作用。像+layer_id+一样作为路由的参数。您可以尝试这样

var layer_id = $(this).data('id');
var url = '{{ route("layers.destroy", ":id") }}';
url = url.replace(':id', layer_id );
$.ajax({
    type: "POST",
    url: url,
    data: {},
    success: function (data) {

    },
    error: function (data) {

    }
});

答案 1 :(得分:0)

{{URL::to('/destroy')}}+'/'+layer_id;

路线

Route::get('/destroy/{id}', 'controller@destroy')

控制器

public function destroy($id){
// use $id here

}

希望您能理解