Laravel 5.6:为什么到Controller的AJAX POST不显示Controller中的数据加载?

时间:2018-09-17 23:39:50

标签: ajax post laravel-5.6

我已经为此工作了几个小时,却一无所获。本质上,我的Ajax呼叫似乎运行良好。我正在从视图中提取表单数据。当我查看Chrome Network时,可以看到XHR数据。我的状态为200,然后单击“确定”。但是,无论我做什么,我都无法在控制器中显示任何数据。我已经通过注释掉了我的路线来进行测试,并且确实可以得到一个错误,所以这是肯定的。 XHR数据也显示正确的URL。但是,即使控制器内部只有一个简单的dd($ request)也无法提供任何帮助,甚至也没有空的[]。我尝试了所有选项,并将其谷歌搜索至死。我在做什么错-谢谢!

缩写HTML

Public Animator anim

Public void GenAnim <t>(string "name", t val)
{
   If (t is float)
   {
       anim.setfloat ("name",  val)
   }

If (t is bool)
    {
     anim.settrigger("name",  val)
     }

If (t is int)
     {
     anim.setint ("name",  val)
     }
}

AJAX

<form action="" method="POST"  id="formData">
        <fieldset>
        {{ Form::hidden('customer_id',$customer[0]->id,['id'=>'customer_id'])}}
        {{ Form::hidden('lastname1',$customer[0]->lastname1,['lastname1'=>'lastname1'])}}
        {{ Form::hidden('reference',$quotation[0]->reference,['id'=>'reference'])}}
        </fieldset>
    </form>

路线

 $("#editsubmit").on('click', function () {
        event.preventDefault();
        var formData =$("#formData").serialize();
        var id = $("#reference").val();

        $.ajax({
            headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
            type: 'POST',
            contentType:'JSON',
            processData: false,
            url: '/save_edit/'+id,
            data: {
                "_method": 'POST',
                "result": formData,
            },

          
            error: function () {
                alert('there has been a system level error - please contact support')
            }
        });
    });
  

控制器

Route::post('/save_edit/{id}','QuotationController@save_quote_edited');

2 个答案:

答案 0 :(得分:0)

要处理表格,您不应调用$request->getContent(),而应调用$request->all()获取所有参数,应调用$request->get('foo')$request->foo以获取单个参数,或{{ 1}}来获取多个参数。

要获得积分,如果您使用Laravel's Form Request Validation,则可以调用$request->get(['foo','bar','baz')并仅获取通过验证检查的参数。

答案 1 :(得分:0)

您的路线要求参数“ id”,但您的控制器方法中没有该参数。

Route::post('/save_edit/{id}','QuotationController@save_quote_edited');

尝试:

public function save_quote_edited(Request $request, $id){

    *** insert code here ***

}