[英]Laravel 4: Input::all() returns no data with $.ajax POST
在學習Laravel 4的過程中,如果我的問題聽起來很傻,請原諒我。
我正在嘗試使用$ .ajax將表單數據發布到控制器。 檢查控制器后,Input :: all()完全不會填充數據。
檢查表單是否已在jquery代碼中序列化。 所以現在我在這里尋求幫助,看看是否有人知道如何解決此問題。
以下是到目前為止我編寫的代碼。
jQuery代碼
<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>
route.php
Route::post('signup/add', array('uses'=>'MemberController@store'));
MemberController.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()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.