我想使用post方法通过AJAX将下拉列表数据从视图发送到控制器作为表单变量。
我可以使用get方法和路由参数将下拉列表数据从视图发送到控制器。
以下是我的观看代码段:
function drawChart(frmyear, toyear)
{
console.log(frmyear);
console.log(toyear);
var jsonData = $.ajax({
url: "get_salesthree/"+ frmyear + "/"+ toyear +"/",
dataType: 'json',
async: false
}).responseText;
console.log(jsonData);
路线代码段:
Route::get('get_salesthree/{frmyear}/{toyear}', array('uses'=>'Analytics\DashboardController@get_salesthree'));
出于安全考虑,我不想使用路由参数传递用户输入数据。此外,我有多个用户输入参数需要发送到控制器,因此上述方法也是不可行的。因此,在这种情况下可以使用任何其他替代解决方案吗?
控制器代码段:
public function get_salesthree($frmyear, $toyear)
{
return \Response::json(Salethree::get_formatted_salesthree($frmyear, $toyear ));
}
下拉列表代码段:
<label>From Date</label>
<select id="ddlfrmyear" name="frmyear" onchange="check(this);">
<option value="-1">Select Date </option>
@foreach ($date_lists as $date_list)
<option value="{{ $date_list}}">{{ $date_list}}</option>
@endforeach
</select>
JavaScript检查功能:
function check(sel)
{
document.getElementById('ddltoyear').disabled = !sel.selectedIndex;
var frmyear = document.getElementById('ddlfrmyear').value;
var toyear = document.getElementById('ddltoyear').value;
console.log(frmyear);
console.log(toyear);
if (toyear != '-1')
{
drawChart(frmyear, toyear);
//drawChart();
}
}
现在我按照建议改变ajax调用后没有定义检查功能。我想知道下拉列表的选择事件和AJAX路由之间的关系是什么?
答案 0 :(得分:0)
这只是您理解的一个示例,我希望这将指导您获取您的功能。
如果您不想在URL中显示您的数据/参数,那么您也可以使用Ajax Post,
$.ajax({
type: 'POST'
url: "get_salesthree/",
data: yourForm.serialize()
dataType: 'json'
并在您的路由中,删除查询字符串的变量,并使其像这样。
Route::post('get_salesthree/', array('uses'=>'Analytics\DashboardController@get_salesthree'));
并在您的控制器中
public function get_salesthree(Request $request){
$frmyear = $request->input('frmyear');
$toyear = $request->input('toyear');
//do your functionality as per your need
return \Response::json(Salethree::get_formatted_salesthree($frmyear, $toyear ));
}
答案 1 :(得分:0)
试试这个jquery答案:
JS:
$('form').submit(function(e){
e.preventDefault();
var frmyear = $('#ddlfrmyear').val();
var toyear = $('#ddltoyear').val();
$.ajax({
type: 'POST'
url: "get_salesthree/",
data: {frmyear:frmyear ,toyear:toyear},
dataType: 'json',
success:function(data){
console.log(data);
}});
});
laravel:
Route::post('get_salesthree/', function(Request $request){
$frmyear = $request->input('frmyear');
$toyear = $request->input('toyear');
return \Response::json(Salethree::get_formatted_salesthree($frmyear, $toyear
});