在学习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(( 工作。