2017-03-01 7 views
1

私のシナリオは基本的に私のコントローラに文字列として3つのオブジェクトのリストを送信しようとしています。以下のようにajax投稿を使用します。私は私のページは(JSP)ページを確認するためにリダイレクトされるようにしたいが、私の場合には起こってはまだそれでいただきました!ここでspringmvcでajaxのポストコールの後に私のページ(jsp)を別のページ(jsp)にリダイレクトできる方法はありますか

@RequestMapping(value = "ajaxEditFormUpdate", method = RequestMethod.POST) 
    @ResponseBody 
    public ModelAndView handleResponse(@RequestBody String records) { 
     System.out.println(records); 
     String viewName = "content/review"; 
     ModelAndView mav = new ModelAndView(); 
     mav.setViewName(viewName); 
     return mav; 
    } 

$.ajax({ 
    type: 'POST', 
    dataType: 'json', 
    url: "ajaxEditFormUpdate", 
    data: JSON.stringify(newData), 
    beforeSend: function(xhr) { 
     xhr.setRequestHeader("Accept", "application/json"); 
     xhr.setRequestHeader("Content-Type", "application/json"); 
    } 
}); 

MyController:JavaScriptのAJAX呼び出しの機能

同じページではあるが、(chrome開発ツールの)ネットワークの応答セクションには、HTML形式のJSPページが表示されますが、ページはレンダリングされていません。レビューページを表示できる方法はありますか?

答えて

0

POSTリクエストに対する応答で受け取ったページに移動することはできません。 しかし、あなたは、Ajaxに成功を追加することができます。

$.ajax({ 
type: 'POST', 
dataType: 'json', 
url: "ajaxEditFormUpdate", 
data: JSON.stringify(newData), 
beforeSend: function(xhr) { 
    xhr.setRequestHeader("Accept", "application/json"); 
    xhr.setRequestHeader("Content-Type", "application/json"); 
}, 
success: function (response) { 
    window.location.href = '/content/review'; 
} 
}); 

あなたのコントローラは次のように探しています:

@RequestMapping(value = "ajaxEditFormUpdate", method = RequestMethod.POST) 
@ResponseBody 
    public ResponseEntity<Void> handleResponse(@RequestBody String records) { 
     System.out.println(records); 
     return new ResponseEntity<>(HttpStatus.OK); 
    } 

が、今、あなたはまた、/content/reviewページのビューを返すためにGETして新しいコントローラを作成する必要があります

psあなたはまだ任意のコントローラを変更せずにページをレンダリングしたい場合他の変形はハックのようです、あなたの成功はこのようになりますする必要があります。

success: function (response) { 
     document.open(); 
     document.write(response); 
     document.close(); 
    } 

しかし、このアプローチは推奨されません。

+0

ありがとうございました。 –

+0

あなたはどちらを選んだのですか:正常かハックですか? – Optio

+0

普通のもの、追加のコントローラを追加してレビューページを取得する –

関連する問題