2016-02-02 26 views
4

我希望通過AJAX將視圖下拉列表數據作爲表單變量使用post方法發送到控制器。通過AJAX在Laravel 5.1中將視圖中的用戶輸入數據傳遞給控制器​​

我能夠使用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\[email protected]_salesthree')); 

出於安全原因,我不想通過使用路由參數用戶輸入數據。另外我有多個用戶輸入參數需要發送給控制器,因此上述方法也不可行。因此在這種情況下可用的其他解決方案?

控制器代碼片段:

public function get_salesthree($frmyear, $toyear) 
{ 

    return \Response::json(Salethree::get_formatted_salesthree($frmyear, $toyear)); 

} 

DROPDOWNLIST代碼片段:

<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

這只是您理解的一個例子,我希望這會引導您獲得您的功能。

,如果你不想顯示您的數據/在URL參數,那麼你也可以使用Ajax後,

$.ajax({ 
     type: 'POST' 
     url: "get_salesthree/", 
     data: yourForm.serialize() 
     dataType: 'json' 

,並在你的路由,刪除查詢字符串變量,並使其像這樣。

Route::post('get_salesthree/', array('uses'=>'Analytics\[email protected]_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)); 

} 
+0

我嘗試了你的建議方法,並按照建議包含了ajax方法,但由於這個原因我沒有定義函數(實際上這是在Dropdownlist的OnSelect事件上調用的JavaScript函數)。我想知道爲什麼這個函數沒有在選擇dropdown時被執行,因爲我只是改變了ajax。 – rahul16590

+0

爲什麼不將純Js代碼轉換爲Jquery標準?它會幫助你調試你的代碼。第二,console.log你的代碼,並檢查它在哪個位置斷開 – Qazi

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 

}); 
相關問題