2014-03-05 62 views
0

創建我寫這篇文章的代碼:變化JSON形式從

$(function() { 
    $('form').submit(function() { 
     var voter = []; 
     var voted_questions = []; 
     var answers = []; 

     $('input[type="radio"]:checked').each(function(){ 
      voted_questions.push($(this).data('questionid')); 
      answers.push({'question':$(this).data('questionid'),'options':this.value}); 
     }); 

     $('input[type="checkbox"]:checked').each(function(){ 
      voted_questions.push($(this).data('questionid')); 
      answers.push({'question':$(this).data('questionid'),'options':this.value}); 
     }); 

     $('input[type="text"]').each(function(){ 
      voted_questions.push($(this).data('questionid')); 
      answers.push({'question':$(this).data('questionid'),'custom':this.value}); 
     }); 

     $('input[type="hidden"]').each(function(){ 
      if ($(this).data('voter') == 'ip_address')   
      voter.push({'ip_address':this.value}); 
      if ($(this).data('voter') == 'voting_started')   
      voter.push({'voting_started':this.value}); 
      if ($(this).data('voter') == 'voting_ended')   
      voter.push({'voting_ended':this.value}); 
     }); 

     var data = { 
      'voter': voter, 
      'voted_questions': voted_questions, 
      'answers': answers 
     }; 

     $('#result').text(JSON.stringify(data)); 
     return false; 
    }); 

}); 

演示:http://www.jsfiddle.net/B9r22/5

我不知道如何從voter刪除[]。我想有JSON是這樣的:

'voter': 
{ 
'ip_address': a.b.c.d, 
'voting_started':voting_started, 
'voting_ended': voting_ended, 
} 
+0

更改您的數組對象 –

回答

0

您正在voter作爲數組([]),然後推對象進去。要獲得您想要的內容,請將voter作爲對象({})並添加所需的鍵/值對。

var voter = {}; 

$('input[type="hidden"]').each(function(){ 
    if ($(this).data('voter') == 'ip_address')   
     voter.ip_address = this.value; 
    if ($(this).data('voter') == 'voting_started')   
     voter.voting_started = this.value; 
    if ($(this).data('voter') == 'voting_ended')   
     voter.voting_ended = this.value; 
}); 
+0

謝謝它的工作原理,但我發現一個問題,我有這個有輸入[類型=「複選框」]:檢查......但對於輸入[類型=「文本「]:檢查它不工作,爲什麼和解決方案是什麼? – user3357400

+0

@ user3357400:無法檢查文本輸入。你想做什麼? –