2012-02-10 13 views
0

私はdojo拡張グリッドを使用しています。 "myGrid"とマークされた変数はグリッドを参照しています。javascript配列をシリアライズ

function addtocart() { 
     $("#additem").click(function(){ 
      var myGrid = dojo.byId(dataGrid); 
      var ids = []; 
      var gridRow = myGrid.selection.getSelected(); 
      $.each(gridRow, function(i, l){ 
       ids.push(l.id); 
      }); 
      var registcarturl = "${carturl}" + $("#regCart :selected").val(); 
      $.get(registcarturl, {instanceIds: ids}, function(data) { 
       alert(data); 
      }); 
     }); 
    } 

シリアル化された配列の文字列は、どの文字列も動的に作成できるため、どのような文字列を表示するべきかわかりません。私は、「219 [

function addtocart() { 
     $("#additem").click(function(){ 
      var myGrid = dojo.byId(dataGrid); 
      var ids = "["; 
      var gridRow = myGrid.selection.getSelected(); 
      $.each(gridRow, function(i, l){ 
       ids = ids + "\"" +l.id +"\""; 

       if(i != (gridRow.length -1)){ 
        ids = ids + ","; 
       }; 

      }); 
      ids = ids + "]"; 
      alert(ids); 
      var registcarturl = "${carturl}" + $("#regCart :selected").val(); 
      $.get(registcarturl, {instanceIds: ids}, function(data) { 
       alert(data); 
      }); 
     }); 
    } 

を次のように私のデータは、それがを解析しようとする私のJavaのコントローラになると私は機能を変形例に示すよう

$.get("test.cgi", { name: "John", time: "2pm" }, function(data){  alert("Data Loaded: " + data); }); 

jqueryのgetメソッドを使用しようとしています"は長く、もちろんNumberFormatExceptionという結果になります。この[ "219"、 "217"、 "218"、 "195"]

のように見えるjavascriptの変数IDは、誰かがいくつかのガイダンスを提供していただけます。

+0

@RequestParam施設で

@RequestMapping(value = "addtocart/{cart}", method = RequestMethod.GET) public @ResponseBody String addtocart(@PathVariable("cart") Long cart, @RequestParam("modinstid[]") ArrayList<String> instances, Model uiModel) {...Action logic goes here...} 

ルックは、アレイにあなたの数字の周りから引用符を削除してください。 Javaが数字を期待しているときの送信文字列。 –

答えて

0

わかりました。解決策は非常に簡単でした。ここにあります。次のように

function addtocart() { 
     $("#additem").click(function(){ 
      var myGrid = dojo.byId(dataGrid); 
      var ids = []; 
      var gridRow = myGrid.selection.getSelected(); 
      $.each(gridRow, function(i, l){ 
       ids[i] = l.id; 
      }); 
      var registcarturl = "${carturl}" + $("#regCart :selected").val(); 
      $.get(registcarturl, {"modinstid[]": ids}, function(data) { 
       alert(data); 
      }); 
     }); 
    } 

GET要求{"modinstid[]": ids}を見て、対応するスプリングMVCコントローラです。アクションの引数

0

JSON-jsを使用すると、任意のJavaScriptオブジェクトまたは配列をJSONにシリアル化できます。私はids[ids.length]代わりの.push使用アレイ上に別のインデックスをプッシュする

function addtocart() { 
    $("#additem").click(function(){ 
     var myGrid = dojo.byId(dataGrid); 
     var ids = []; 
     var gridRow = myGrid.selection.getSelected(); 
     $.each(gridRow, function(i, l){ 
      ids[ids.length] = l.id; 
     }); 
     alert(ids); 
     var registcarturl = "${carturl}" + $("#regCart :selected").val(); 
     $.get(registcarturl, {instanceIds: ids}, function(data) { 
      alert(data); 
     }); 
    }); 
} 

お知らせ:

0

はちょうどあなたが$.get()メソッドに渡すIDの配列を作成します。 .pushは新しいブラウザでは高速に動作しますが、旧式のブラウザでは前者の方が高速に動作します。

関連する問題