【问题标题】:how to fetch the data from Jquery Ajax POST request如何从 Jquery Ajax POST 请求中获取数据
【发布时间】:2020-03-15 19:58:08
【问题描述】:

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

 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');
}

这是路由文件

Route::get('gallery', 'GalleryController@index');
    Route::post('gallery/saveImage', 'GalleryController@saveImage');
    Route::get('gallery/getFiles', 'GalleryController@getFiles');
    Route::post('gallery/deleteFile', 'GalleryController@deleteFile');

它给出“没有”作为响应。谁能告诉我我在哪里犯了错误。提前致谢。

【问题讨论】:

  • 请发布您的路线
  • 请贴出你的路线代码,一定有错误。
  • 尝试data: { id } 发送请求正文,如id=123
  • @PrabhjotSinghKainth 如果路由文件中存在错误,则它不会响应“没有”。我已经分享了路线文件
  • @Utkarsh 尝试 print_r($r) 检查它是否接收到任何数据

标签: jquery ajax laravel


【解决方案1】:

发送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     
        }
      });

它对我有用。

【讨论】:

  • 我在我的标头中包含 csrf 令牌
【解决方案2】:

像这样编写你的 ajax 代码。

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

【讨论】:

    【解决方案3】:

    我不知道为什么,但从请求中删除 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-&gt;id 来存储来自请求的 id

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 正确的想法,但不会发送 JSON,我什至不确定它是否应该
      • 您的 ajax 调用存在问题。您可以在此处阅读有关 ajax 调用的信息:api.jquery.com/jquery.ajax
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多