【问题标题】:AJAX post not sending data to laravel controllerAJAX 帖子未向 laravel 控制器发送数据
【发布时间】:2015-11-22 14:55:17
【问题描述】:

也许这是一个很常见的话题,但我找不到任何解决方案!,我正在开发的应用程序是在 Laravel 5.0 下,我需要将一些数据从 jquery ajax 发送到laravel controller,我已经按照 this 教程使用 ajax 发布数据,我已经按照步骤进行了全局配置,所以我有一个带有 csrf 的元数据strong> 令牌,当我使用 ajax 将 post 请求发送到 url 时,它只是发送令牌!但我给它发送的任何数据都没有!

这是我的 ajax 函数(我正在使用虚拟数据来测试它):

        $.ajax( {
            url        : '/reservacion/paso-uno/enviar',
            method     : 'post',
            data       : { name: "John", location: "Boston" }
        } );

但是当我 dd(\Request::all()); 在 post func 中我只得到令牌,如果我检查标题表单数据,我只得到这个:

这是标题的完整图像:

这是带有 csrf 的元标记:

<meta name="_token" content="{{{ csrf_token() }}}"/>

这是全局 ajax 设置:

$.ajaxSetup({
                headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
            });

重大更新

不知道为什么,也不知道如何,我想这只是一个缓存问题,但是具有上述配置它会发送数据,但这仅在我有 &lt;input type='submit' &gt; 并在 jquery 中设置点击事件时发生,因为如果我为提交事件设置它,它会在浏览器路径中使用查询字符串重新加载页面。

现在的问题是没有达到控制器的功能......当我点击按钮时没有任何反应,数据被发送但它没有到达 laravel 控制器。

【问题讨论】:

  • 尝试添加dataType: 'html'
  • 您是否尝试将原始 JSON 发布到您的控制器?
  • @hizbul25 noup,没用
  • @Phil 是的,但我现在需要将数据发送到控制器,一旦到了那里,我将了解如何操作它...
  • @SetSailMedia 是的,也许,但这次不是关于 Laravel,它更像是一个 ajax 的东西,我真的不知道为什么它不发送数据!

标签: jquery ajax post laravel-5


【解决方案1】:
  1. 我不理解您在 Ajax 中的“url”参数。网址应该是 像这样:“http://serveradrress/yourroute
  2. 最重要的是 您在 ajax 中的成功、错误和完整功能在哪里?
  3. 您是向您的 api 提交请求还是只是内部请求 请求??
  4. 确保使用 post 方法: Route::post('//your postroute','//controller@//method');
  5. 在你的 控制器你应该有类和:

    public function(Request $request){
        return response()->json(dd($request->all()));
    }
    

【讨论】:

    【解决方案2】:

    HTML 表单

    在表单的某处添加 CSRF 令牌 像这样

    <meta name="csrf-token" content="{{ csrf_token() }}">
    

    路线

    添加发布路线

    Route::post('/path/to/ajax-form-process', 'FormController@processor');
    

    表单处理方法

    class FormController extends Controller{
    
      public function processor(Request $request){
        $input = $request->all();
    
        //Do other processes
    
        return '200'; //Use any string that is appropriate
      }
    
    }
    

    jQuery Ajax

    在您的 JS/jQuery 脚本中添加以下内容

    $.ajax({
      type: "POST",
      url: 'path/to/ajax-form-process',
      data: {
        data1: 'data1',
        data2: 'data2',
        data3: 'data3'
      },
      success: function(html){
        console.log(html);
      }
    });
    

    【讨论】:

      【解决方案3】:

      请尝试在路由中将您的方法更改为 GET。然后用 Input::all(); 抓取内容;

      【讨论】:

        【解决方案4】:

        希望对你有帮助。

        如下设置元标记

        <meta name="csrf-token" content="{{ csrf_token() }}">
        

        设置路线

        Route::get('/your/url/goes/here',
                [
                'uses' => 'TestController@testFunction'
                ]);
        

        设置控制器功能

        在上面use Input;

        public function iddtest()
        {
        print_r(Input::all());
        }
        

        请求如下

        $.ajax({
            data: {data1:'data1',data2:'data2'},
            url: '/your/url/goes/here',
            type: 'POST',
            beforeSend: function (request) {
                return request.setRequestHeader('X-CSRF-Token', $("meta[name='csrf-token']").attr('content'));
            },
            success: function(response){
                console.log(response);
            }
        })
        

        【讨论】:

          【解决方案5】:

          您可以将_token 作为数据集的一部分传递吗?

              $.ajax( {
                  url        : '/reservacion/paso-uno/enviar',
                  method     : 'post',
                  data       : { "_token" : $('meta[name=_token]').attr('content'), name: "John", location: "Boston" }
              } );
          

          【讨论】:

          • 我照你说的做了,但什么也没发生...同样的结果
          • 是否也删除 $.ajaxSetup() 条目?
          • 是的,我确实删除了 ajaxSetup
          • 你能再检查一下吗?它在这个小提琴上正确发布:jsfiddle.net/bLuvf7sw
          • Noup,它没有发布,现在我遇到了一个问题,当我点击按钮时它会重新加载页面
          猜你喜欢
          • 2017-04-29
          • 2019-10-21
          • 2023-03-20
          • 1970-01-01
          • 1970-01-01
          • 2017-03-11
          • 1970-01-01
          • 1970-01-01
          • 2018-12-22
          相关资源
          最近更新 更多