2016-07-05 20 views
3

jqueryを使用してビューからspring mvcコントローラにデータを送信する必要があります。 Spring mvcはこれらの値をdbに挿入/更新します。jsonデータでjQuery ajaxリクエストがspring mvcコントローラに到達していません

var json = {"KPI" : visual, "partnerName": params['partnerName'], 
"partnerAddress" : params['partnerAddress'], "documentType" : params['documentType'], 
"itemQualifier": getItemQualifier(),"itemIdentifiers" : params['itemIdentifiers'], 
"currency" : getCurrency(), "sellSide": getSellSide()}; 

$.ajax({                 
     type: "POST", 
     url: "/reports/savefilters", 
     data: json, 
     success: function(response){ 
       alert('success: ' + response); 
       }, 
     error: function(e){ 
       alert('Error: ' + e); 
       } 
}); 

Spring MVCのコントローラコード:

@RequestMapping(value="/savefilters", method=RequestMethod.POST) 
public String saveFilters(@RequestBody AnalyticsFilters filters){ 
    System.out.println("savefilters method in controller"); 
    System.out.println("KPI:"+filters.getKPI()); 
    if(filters.getPartnerName() != null && filters.getPartnerName().size()>0) System.out.println("partnerName:"+filters.getPartnerName().get(0)); 
    if(filters.getPartnerAddress() != null && filters.getPartnerAddress().size()>0) System.out.println("partnerAddress:"+filters.getPartnerAddress().get(0)); 
    if(filters.getDocumentType() != null && filters.getDocumentType().size()>0) System.out.println("documentType:"+filters.getDocumentType().get(0)); 
    System.out.println("itemQualifier:"+filters.getItemQualifier()); 
    if(filters.getItemIdentifiers() != null && filters.getItemIdentifiers().size()>0) System.out.println("itemIdentifiers:"+filters.getItemIdentifiers().get(0)); 
    System.out.println("currency:"+filters.getCurrency()); 
    System.out.println("sellSide:"+filters.getSellSide()); 
    new DashboardDisplayService().saveFilters(); 
    return "successful"; 
} 

POSTリクエストメソッドを取得するために変換され、Spring MVCのコントローラに達することができないばかりされて、私は

コードの下のjQueryを使用しています。私はデータ型、contenttypeなどのような別のajax jsonのオプションを試してみましたPOSTメソッドはGETメソッドに変更されていないことを確認する方法???

+0

ネットワーク検査でGETが送信されていることを確認しましたか、コントローラに到達していないことからこれを推測していますか?どのようにajaxリクエストがトリガされましたか、フォームのサブミットなど、防止されないデフォルトのアクションが存在する可能性がありますか? –

+0

1.はい。私は要素を調べました。新しいタブでリンクを開いたときに "405 - GETはサポートされていません"というエラーが表示されました。 2. jqueryダイアログで選択するオプションがあります。 jquery ajaxリクエストをspring mvcに送信してdbを更新しようとしています。ここにフォーム提出が含まれていません – Hemachandra

+0

新しいタブでリンクを開くと、常にGETになります。ネットワーク検査ツールで実際のAJAXリクエストを確認しましたか? –

答えて

0

Ajaxメソッドは、ResponseBodyのメッセージを返します。あなたのハンドラメソッドを以下のように変更しました。

@RequestMapping(value="/savefilters", method=RequestMethod.POST) 
public @ResponseBody String saveFilters(@RequestBody AnalyticsFilters filters){ 
... 
} 
+0

コメントMihirのおかげで。上記のコメントで言及したように、文字列パラメータが不足しています。私はなぜこれが起こっているのかについてコードを調べる必要があります。 – Hemachandra

+0

ハンドラメソッド内に到達していますか? –

+0

番号まだ分かりませんでした。なぜエラーが来るのですか? – Hemachandra

関連する問題