2014-04-26 19 views
0

我想填充一個json數組通過ajax發送到服務器。然而,它不工作,我不知道爲什麼。下面的代碼:

var form = $('.dash-name-form'); 


    form.serializeArray(); 

    input = []; 

    $.each(form[0], function(){ 

     input.push({ 

      this.name : this.value 
     }); 
    }); 

    console.log(JSON.stringify(input)); 

它的工作原理,當我做到以下幾點:

$.each(form[0], function(){ 

     input.push({ 

      'name' : this.name, 
      'value': this.value 
     }); 
    }); 

但我真的希望,爲了從第一塊輸出的更簡化更很好地與後端工作我使用的框架(laravel的Input :: json() - > all()不適用於第二個)。

所有的建議,非常感謝。謝謝你們。

+0

您是否意識到'serializeArray'調用沒有做什麼? –

+0

爲從'serializeArray()','var formData = form.serializeArray();返回的數組設置一個值。除非需要過濾或處理數據,否則請將數據推送到單獨的數組中。 –

回答

0

你需要注意一個事實,即功能,如serializeArray返回值,如果不值存儲在一個變量或直接使用它,電話也沒用

試試這個吧。 這將讓你的表單中的數據以純對象

var all =$('.dash-name-form').serializeArray(), 
     data = {}; 

$.each (all, function (key, val){ 
     data [key] = val; 
}); 

console.log (data); 
0

嘗試這樣的:

$.each(form.serializeArray(), function(){ 
    var obj = {}; 
    obj[this.name] = this.value; 
    input.push(obj); 
}); 
0
input.push({ 
    this.name : this.value 
}); 

這看起來將是一個問題。 this.name將被解釋爲關鍵字,而不是您所期望的(這與做{"this.name": this.value}相同)。

var foo = "bar"; 
var x = { 
    foo: "test" 
} 

console.log(x);