2017-12-05 8 views
-1

私はこのようなJSONを構築しようとしており、フォームポストを介してサーバーに送信しています。これらのjson値はすべて、UIの選択オプションからのものです。jsを使ってJSONを作成するには?

{ 
    "pages":[ 
     { 
     "id":"messages", 
     "name":"yourinbox", 
     "value":"ACTIVE" 
     }, 
     { 
     "id":"emails", 
     "name":"newmail", 
     "value":"INACTIVE" 
     } 
    ] 
} 

私は以下のコードで試してみましたが、正しいフォーマットを取得できません。 助けてください?ありがとう!

var self = this; 
var request = new HttpRequest(); 
this.form$ = $(selector); 
self.form$.find('.loader').hide(); 

this.onSubmit = function(e){ 
hideSubmit(); 
e.preventDefault(); 
e.stopPropagation(); 
var parsedata = {}; 
var data = {}; 
var selectedOptions = self.form$.find('select'); 
for (var i = 0, ii = selectedOptions.length; i < ii; ++i) { 
var input = selectedOptions[i]; 
data["name"] = input.id; 
data["value"] = input.value; 
parsedata.push(data); } }; 
+1

どこコードの残りの部分はありますか? 'self'は' window'を指します...他のプロパティ/メソッドは何であると思われますか? – Teemu

+0

私はすべての選択項目を得ることができる、自己には問題ありません。残りのコードとともに更新された投稿 – dragonfly163

答えて

0

これは大まかなアプローチです。即興を自由にしてください。

let object = {"pages" : []}; 
 

 
let options = document.getElementsByTagName("option"); 
 

 
for(i=0;i<options.length; i++) { 
 
    object["pages"][i] = {} 
 
    object["pages"][i]["id"] = options[i].getAttribute('id'); 
 
    object["pages"][i]["value"] = options[i].getAttribute('value'); 
 
    let activeStatus = options[i].getAttribute('selected'); 
 
    if(activeStatus == "true") object["pages"][i]["activeStatus"] = activeStatus; 
 
    else object["pages"][i]["activeStatus"] = false; 
 
} 
 

 
console.log(object)
<select> 
 
<option id="1" value="One" selected=true>One</option> 
 
<option id="2" value="Two">Two</option> 
 
<option id="3" value="Three">Three</option> 
 
<option id="4" value="Four">Four</option> 
 
</select>

関連する問題