如何从Jquery Ajax POST请求获取数据

时间:2019-11-20 07:08:30

标签: jquery ajax laravel

我正在尝试获取Jquery Ajax POST请求发送的laravel控制器函数中的数据,但无法获取数据并显示。 这是ajax请求

pd.DataFrame

这是控制器方法

 deleteImg=function(id)
{

    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
        }
    });
    $.ajax({
        url: "/admin/gallery/deleteFile",
        method: 'POST',
        data:{'id':id},
        dataType:'JSON',
        contentType: false,
        cache: false,
        processData: false,
        success: function (res) {
            console.log(res);
        }
    });
}

这是路由文件

public function deleteFile(Request $req)
{
    $id=$req->id;
    if($id)
    {
        die('done');
    }
    die('without');
}

给出“无”作为响应。谁能告诉我我在哪里犯错。预先感谢。

4 个答案:

答案 0 :(得分:0)

像这样编写您的ajax代码。

$.ajax
({
   type: "POST",
   url: "{{route('put your route here')}}",
   data: {"id":id,'_token': "{{ csrf_token() }}"},
   success: function(res)
   {
     console.log(res);
   }
});

答案 1 :(得分:0)

发送数据Data: {"id" : id},并发送csrf令牌进行验证。

请查看以下内容:https://laravel.com/docs/5.8/csrf以获得laravel csrf令牌。

编辑:

 var token = "<?php echo(csrf_token())?>";
    $.ajax({
        url: 'URL',
        type: 'POST',
        data: {id : val, _token : token},
        success: function(data){
           //todo     
        }
      });

对我有用。

答案 2 :(得分:0)

我不知道为什么,但是从请求中删除contentType: false, cache: false,processData: false,对我有用。

ajax请求现在看起来像这样:

$.ajax({
        url: "/admin/gallery/deleteFile",
        method: 'POST',
        data:{"id":id},
        dataType:'JSON',
        success: function (res) {
            console.log(res);
        }
    });

在后端控制器上,我使用$id=$req->id来存储来自请求的ID

答案 3 :(得分:-1)

您必须以JSON格式发送数据,例如数据:{id:id}。