Laravel 4: Input::all() 不返回带有 $.ajax POST 的数据


Laravel 4: Input::all() returns no data with $.ajax POST

在学习Laravel 4的过程中,如果我的问题听起来很傻,请原谅我。

我正在尝试使用 $.ajax 将表单数据发布到控制器。检查控制器时,输入::all(( 根本没有填充数据。

已检查表单是否已在 jquery 代码中序列化。所以现在我在这里寻求帮助,看看是否有人知道如何解决这个问题。

以下是我到目前为止编码的内容。

Jquery Code

<script>
$(document).ready(function(){
    var BASE = "<?php echo Request::root(); ?>/signup/add";
    $('#password').on('blur', function() {
        var info = $('.info');
        $.ajax({
            url:BASE,
            method:'post',
            contentType:'application/json; charset=utf-8',
            cache:false,
            dataType:'json',
            data: $("#membersignup").serialize(),
            success:function(data){
                console.log(data);
            },
            error:function(xhr,status,error){
                //errors here
            }
        });
    });
});
</script>

路线.php

Route::post('signup/add', array('uses'=>'MemberController@store'));

成员控制器.php

public function store()
{
    return Response::json(Input::all());
}

而不是使用以下命令创建url

var BASE = "<?php echo Request::root(); ?>/signup/add";

使用如下所示的命名路由:

Route::post('signup/add', array('uses' => 'MemberController@store', 'as' => 'signup.add'));

因此,使用如下所示的内容,您可以更轻松地为ajax请求生成url

var BASE = "<?php echo route('signup.add'); ?>

如果您仍在生成正确的url,这可能无法解决您的问题,但这肯定会产生正确的url。我怀疑,您没有将请求发送到正确的url但不确定。

由于仍然没有公认的答案,我刚刚遇到了类似的问题,并通过删除dataType选项并允许它自动选择来修复它。

Set your contentType like this...
$.ajax({
        url:BASE,
        method:'post',
        contentType: 'application/x-www-form-urlencoded',
        cache:false,
        dataType:'json',
        data: $("#membersignup").serialize(),
        success:function(data){
            console.log(data);
        },
        error:function(xhr,status,error){
            //errors here
        }
    });

我的猜测是 $.ajax 不适用于 jquery-1.11.0.min.js

更改为 $.post,您将拥有 Input::all(( 工作。