2014-11-25 163 views
2

繼承人我的代碼,所以你可以看到我想要做的如何將jQuery數組傳遞給laravel控制器

var cont = 1; 
var form_data = {}; 
$('.preview-add-button').click(function(){ //Introduce los nuevos campo 
    form_data["isexo"] = $('.payment-form #sexo option:selected').text(); 
    form_data["icolor"] = $('.payment-form input[name="color"]').val(); 
    form_data["iraza"] = $('.payment-form #raza option:selected').text(); 
    form_data["itipo"] = $('.payment-form #tipo option:selected').text(); 
    form_data["iprecio"] = $('.payment-form input[name="precio"]').val(); 
    form_data["ipeso"] = $('.payment-form input[name="peso"]').val(); 
    form_data["imonto"] = parseFloat($('.payment-form input[name="precio"]').val()*$('.payment-form input[name="peso"]').val()).toFixed(2); 
    form_data["remove-row"] = '<span class="glyphicon glyphicon-remove"></span>'; 
    var row = $('<tr></tr>'); 
    $.each(form_data, function(type, value) { 
     $('<td class="input-'+type+'"><input type="hidden" class="form-control" name="data-'+type+'" value="'+value+'"></td>').html(value).appendTo(row); 
     cont++; 
    }); 
    $('.preview-table > tbody:last').append(row); 
    calc_total(); 
    $('#sexo').val(''); 
    $('#color').val(''); 
    $('#raza').val(''); 
    $('#tipo').val(''); 
    $('#precio').val(''); 
    $('#peso').val(''); 
}); 
console.log(form_data); 
$.ajax({ 
    type: "POST", 
    url: "/compras/create/store", 
    data: form_data 
    }); 

如何傳遞這個數組:var form_data = {}我的控制器?除了form_data [ 「刪除行」]

例如:pic

更新:使用Ajax嘗試,我不知道如果我的代碼是好的,

$.ajax({ 
    type: "POST", 
    url: "compras/create/store", 
    data: form_data 
}); 

$.ajax({ 
     data: form_data 
    }); 

我的控制器其中$數據用於返回數組,但是:

public function store() 
    { 
     $compra = new Compra; 
     $compra->fecha = Input::get('fecha'); 
     $compra->num_factura = Input::get('num_factura'); 
     $compra->id_proveedor = Input::get('proveedor'); 
     $compra->nombre_vendedor = Input::get('nombre_vendedor'); 
     $compra->total = Input::get('total'); 
     $compra->descuento = Input::get('desc'); 
     $compra->itbms = Input::get('itbms'); 
     $compra->total_bruto = Input::get('total_bruto'); 
     $id_compra = $compra->id; 
     $data = Input::except('remove-row'); 
     if($compra->save()){ 
      Session::flash('message','Guardado Correctamente'); 
      Session::flash('class','success'); 
     }else{ 
      Session::flash('message','Ha ocurrido un error'); 
      Session::flash('class','danger'); 
     } 
     return $data; 
    } 

回報:{"_token":"tLPlnBix0vQxkjZkHaF9cdIFPvgq7O1U7pTXye8v","fecha":"2014-11-25","num_factura":"2131AJ","proveedor":"6","nombre_vendedor":"DelPotro","id_proveedor":"","ruc":"","telef":"","sexo":"","color":"","raza":"","tipo":"","precio":"","peso":"","total_bruto":"387.00","total":"387.00","desc":"","itbms":""}沒有form_data陣列

+0

怎麼樣導入JS在尤爾HTML的標題? – bodruk 2014-11-25 13:09:26

+0

你有沒有考慮過打ajax電話? – PeterKA 2014-11-25 13:16:26

+0

使用$ .post或$ .ajax,然後將aavascript數組傳遞給一個php文件 – 2014-11-25 13:18:37

回答

0

使用jQuery你可以到指定的路線Ajax調用,這將依次調用指定的控制器方法。您可以使用:

jQuery.ajax([settings ])

//data: form_data, 

或者:

jQuery.post(url [, data ] [, success ] [, dataType ])

//with form_data as the second parameter 

而在你的控制器的方法,你可以用得到的數據:

​​

注意

如果你點擊的元素是submit按鈕,Ajax調用的地方單擊處理中,請考慮以下更改。

變化:

$('.preview-add-button').click(function(){ //Introduce los nuevos campo 
     var form_data = {}; 

要:

$('.preview-add-button').closest('form').on('submit', function(e){ 
     e.preventDefault();//this line prevents the form from submitting 
     var form_data = {}; 

UPDATE

除了上述變化,請把Ajax調用使得就像下面這樣:

$('#peso').val(''); 
    console.log(form_data); 
    $.ajax({ 
     type: "POST", 
     url: "/compras/create/store", 
     data: form_data, 
     success: function(result) { 
      console.log(result); //please post output of this 
     } 
    }); 
}); 
+0

我在做什麼錯了: $ .ajax({type:「POST」, url:「compras/create/store」, data:form_data }); 或 $ .ajax({data:form_data }); 但我的控制器沒有得到數組 – user3654532 2014-11-26 04:54:34

+0

第一個看起來不錯。在你的jQuery代碼中,你放置了這個Ajax調用?你可以在進行ajax調用之前放置一個'console.log(form_data)'行,然後將結果與返回的內容進行比較。 – PeterKA 2014-11-26 05:31:58

+0

使用鍍鉻控制檯:icolor:「brown」imonto:「465.45」ipeso:「321」iprecio:「1.45」iraza:「jersy」isexo:「Hembra」itipo:「leche」remove-row:「」,該調用被放置在$('。preview-add-button')的末尾。click(function(){});我將form_data值重命名爲isomething以便區分,例如:form_data [「icolor」] – user3654532 2014-11-26 13:07:41

0

我在這裏給出的代碼來做類似的事情,在我的情況下,我將用戶興趣(游泳,唱歌,音樂等)保存到名爲Interests(id,interest_name)的數據庫表中。

首先讓我們看一下的JavaScript:

public function saveInterests() 
 
{ 
 
     //I declare the array here 
 
     var allVals = []; 
 
    
 
    
 
     //I get my values from checkboxes checked in a div with id interests 
 
    
 
     $('#interests :checked').each(function(){ 
 
     
 
      allVals.push($(this).val()); 
 

 
     }); 
 

 
    
 
     //Now I am making an post ajax call 
 
    
 
     $.post("http://b2.com/saveInterests", {interests: allVals},function(data) 
 
     { 
 
      //this is ajax callback function 
 
      
 
      if(data=='Saved') 
 
       { 
 
        
 
        alert('Saved With Success'); 
 
        
 
       } 
 
      else 
 
       { 
 
        alert('Sorry couldnt save data in Database'); 
 
       } 
 
     }); 
 

 
}

//來處理這個Ajax請求 路線::交( 'saveInterests',陣列路線( '作爲'=> 'interests.Profile', '使用'=> 'ProfileController可@ saveInterests'));

// Laravel守則ProfileController可用於處理路線

public function saveInterests() 
{ 
     $iarray=Input::get('interests'); //getting my array from ajax call to Laravel 
     foreach($iarray as $userInterest) 
     { 
      $inter = new Interest();  //creating a new row in Interest table using model 
      $inter->interest_name=$userInterest; 
      $inter->save(); 
     } 
     return "Success"; 
} 
相關問題