2017-03-09 4 views
-1

私は自分のフォームのすべての値を取得するためにシリアライズ関数を使用します。 私の問題は、どのようにして生成されたのurl文字列の値だけを抽出し、それを配列に分割することができるかです。シリアライズ/登録

var input = $('#addForm').serialize(); 

deviceBrand=itemBrand&deviceModel=itemModel&deviceSerial=itemSerial&deviceType=Desktop&deviceStatus=Available&deviceDesc=item+description //generated url string 

私は、各string between "=" and "&"を抽出し、配列に各文字列を入れて、文字列関数が必要です。

+0

'serialize'は、AJAXリクエストで送信するためです。 Javascriptの内部での通信には使用しないでください。オブジェクトを作成してください。 – Barmar

+0

あなたは例を挙げることができますか? – Vynterest

+0

私は答えを投稿しました、それは十分ではありませんか? – Barmar

答えて

0

serializeを使用しないでください、文字列をアンシリアライズするために、このコードを試してみてください。これは、より簡単に処理できる、{name: "xxx", value: "yyy" }という形式のオブジェクトの配列を作成します。

var input = $("#addForm").serializeArray(); 
var values = input.map(x => x.value); 

また、すべてのname: valueプロパティを持つオブジェクトを作ることができます。

var object = {}; 
input.map(x => object[x.name] = x.value); 
+0

jsonでこれを回すことは可能ですか? – Vynterest

+0

'values_json = JSON.stringify(values)' – Barmar

+0

これは次のように出力されます:、Brand:brandVal、Model:modelVal、...など。 – Vynterest

0

serializeArrayを使用し、

(function($){ 
$.unserialize = function(serializedString){ 
    var str = decodeURI(serializedString); 
    var pairs = str.split('&'); 
    var obj = {}, p, idx, val; 
    for (var i=0, n=pairs.length; i < n; i++) { 
     p = pairs[i].split('='); 
     idx = p[0]; 

     if (idx.indexOf("[]") == (idx.length - 2)) { 
      // Eh um vetor 
      var ind = idx.substring(0, idx.length-2) 
      if (obj[ind] === undefined) { 
       obj[ind] = []; 
      } 
      obj[ind].push(p[1]); 
     } 
     else { 
      obj[idx] = p[1]; 
     } 
    } 
    return obj; 
}; 
})(jQuery);