2013-02-21 2 views
62

JSON形式のデータをPHPで読み込みたい場合がありますが、JSONを作成するためにJavascriptオブジェクトを構築する方法フォーマットを動的に行う。jqueryを使用して各入力値を使用して動的にJSONを作成

次のように私のシナリオは次のとおりです。

<input title="QA" type="text" class="email"> 
<input title="PROD" type="text" class="email"> 
<input title="DEV" type="text" class="email"> 

私が持っているJavaScriptコードは、これまで各入力を経由してデータをつかむ、私が上で、ここからどのように処理するかを理解することができません。

var taskArray = {}; 

$("input[class=email]").each(function() { 
    var id = $(this).attr("title"); 
    var email = $(this).val(); 

    //how to create JSON? 

}); 

可能であれば、次の出力を得たいと思います。

[{title: QA, email: '[email protected]m'}, {title: PROD, email: '[email protected]'},{title: DEV, email: '[email protected]'}] 

ここで、電子メールは入力フィールド値によって取得されます。

この状況では、どんな光が当てられても大いに感謝します!

答えて

196

function createJSON() { 
    jsonObj = []; 
    $("input[class=email]").each(function() { 

     var id = $(this).attr("title"); 
     var email = $(this).val(); 

     item = {} 
     item ["title"] = id; 
     item ["email"] = email; 

     jsonObj.push(item); 
    }); 

    console.log(jsonObj); 
} 

説明

あなたはan array of objectsを探しています。したがって、空の配列を作成します。キーとして 'title'と 'email'を使用して、それぞれinputのオブジェクトを作成します。次に、各オブジェクトを配列に追加します。

あなたは、文字列が必要な場合は、その後、

jsonString = JSON.stringify(jsonObj); 

を行うサンプル出力

[{"title":"QA","email":"[email protected]"},{"title":"PROD","email":"[email protected]"},{"title":"DEV","email":"[email protected]"}] 
+0

でいくつかの問題を引き起こした。この溶液を用いて行きました。 – BaconJuice

+0

なぜこれらの3つの例で私はいつもこれを手に入れますか? 'Uncaught ReferenceError:jsonObjが定義されていません' – Gino

+0

@Ginoペーストまたはタイプをコピーしましたか? jsonObjを定義する行を参照してください。 – ATOzTOA

8

可能であれば、私は純粋なJSを好むでしょう.JQueryの関数呼び出しがたくさんあるので、パフォーマンスが大幅に向上します。このよう

var obj = []; 
var elems = $("input[class=email]"); 

for (i = 0; i < elems.length; i += 1) { 
    var id = this.getAttribute('title'); 
    var email = this.value; 
    tmp = { 
     'title': id, 
     'email': email 
    }; 

    obj.push(tmp); 
} 
+0

ビッグ+ 1は受け入れ答えはどうもありがとうございました私のIE – Bobadevv

9

私はあなたのJavaScriptは、あなたが必要と仮定すると、唯一のjQueryを使用してJSON文字列にオブジェクトを回すことができるとは思いません出力としてのJSON文字列。

対象とするブラウザによっては、JSON.stringify関数を使用してJSON文字列を生成することができます。

詳細については、http://www.json.org/js.htmlを参照してください。JSONオブジェクトをネイティブにサポートしていない古いブラウザ用のJSONパーサーもあります。あなたのケースでは

var array = []; 
$("input[class=email]").each(function() { 
    array.push({ 
     title: $(this).attr("title"), 
     email: $(this).val() 
    }); 
}); 
// then to get the JSON string 
var jsonString = JSON.stringify(array); 
関連する問題