我不熟悉" AJAX"我一直试图发送请求" ONSELECT"使用" AJAX"并获得一个" JSON"响应" laravel 5"。
这是我的观点
<select>
<option data-id="a" value="a">a</option>
<option data-id="b" value="b">b</option>
<option data-id="c" value="c">c</option>
</select>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<script type="text/javascript">
$('select').change(function(){
var data = $(this).children('option:selected').data('id');
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"html",
data :{ data1:data },
success :function(response)
alert("thank u");
}),
});
</script>
这是我的控制器接收ajax请求
public function formdata(){
$data = Input::get('data1');
//somecodes
return Response::json(array(
'success' => true,
'data' => $data
));
}
这是我的路线
Route::post('form-data',array('as'=>'form-data','uses'=>'FormController@formdata'));
我也尝试仅使用form-data
和{{Url::route('form-data')}}
更改ajax的网址。
答案 0 :(得分:18)
Laravel 5出于安全原因使用csrf令牌验证....试试这个......
在routes.php中
route post('form-data', 'FormController@postform');
在主版面文件
中<meta name="csrf-token" content="{{ csrf_token() }}" />
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$.ajax({
url: '/form-data/',
type: 'POST',
data: {_token: CSRF_TOKEN},
dataType: 'JSON',
success: function (data) {
console.log(data);
}
});
答案 1 :(得分:6)
向您的ajax请求添加错误回调,以查找是否抛出错误,
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"json",
data :{ data1:data },
success :function(response) {
alert("thank u");
},
error: function(e) {
console.log(e.responseText);
}
});
最好使用console.log()来查看详细信息,即使响应是json字符串也是如此。尝试使用代码并告知我们是否将某些内容记录到浏览器控制台
答案 2 :(得分:2)
您的jQuery代码在success
回调中存在语法错误,这就是为什么它没有向Laravel发出任何post
请求,请尝试以下javascript它将会起作用
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
<select>
<option data-id="a" value="a">a</option>
<option data-id="b" value="b">b</option>
<option data-id="c" value="c">c</option>
</select>
<script type="text/javascript">
$(function () {
$('select').on('change', function (e) {
var data = $(this).children('option:selected').data('id');
$.ajax({
type :"POST",
dataType:"json",
url :"http://localhost/laravel/public/form-data",
data :{ data1:data },
success :function(response) {
alert("thank u");
}
});
});
})
</script>
&#13;
在Laravel中,您只需返回array
或object
,它就会自动将其转换为json
回复
return ['success' => true, 'data' => $data];
答案 3 :(得分:1)
您在代码中出错,请正确编写。
$.ajax({
type :"POST",
url :"http://localhost/laravel/public/form-data",
dataType:"json",
data :{ data1:data },
success :function(response){
alert("thank u");
}
});
<强>更新强>
我刚刚看到你的返回数据类型是json,所以请使用
dataType:"json",
或
dataType:"jsonp",
答案 4 :(得分:1)
问题是类型应该是“GET”而不是“POST”和
route get('form-data', 'FormController@postform');
感谢你们每个人的帮助
答案 5 :(得分:0)
如果您要发送所有表单数据然后使用数据更好:ajax中的$(this).serialize()和内部表单使用{{csrf_field()}}