2009-06-26 16 views
0

JavaScriptメソッドからajax呼び出しでSpring MVCコントローラを呼び出そうとしています.JavaScriptメソッドはPrototypeライブラリを使用してajax呼び出しを行います。コントローラはJSPを出力としてスローします。私は応答がlost.Whatがissue.Hereがコードである可能性があり得るようだしかし、私は、ログメッセージに見ることができるようにコントローラを打つことができています ....Spring MVCとPrototype JavaScript


    
function submitNewAjxCall() {
alert('test');
new Ajax.Request('SimpleApp/home.htm',
{
method:'post',
parameters: $('formId').serialize(true),
onComplete: showresult
});
}
function showresult(resultdata) {
alert(resultdata.responseText); ****//this method is not called.....****
}


home.htmポイントこのコントローラへのあなたの助けのための

public ModelAndView handleRequest(HttpServletRequest request, 
      HttpServletResponse response) throws Exception { 
     System.out.println("HomeController : " + ++i); 
     return new ModelAndView("home"); 
    } --- this throws home.jsp

感謝。

+0

フォーマットの勝利だ:あなたは(注釈付き)春のコントローラでこれを使用することができます(たとえば、シリアライザとしてFlexjsonを使用して)直接JSONを書き込むには: ) – skaffman

答えて

1

Ajaxレスポンスを受け取ったら、Firebug(ネットタブ)でチェックし、その内容を確認してください。 HTMLページ全体を返すのではなく、コントローラが何をしたかについて何かを伝えるJavaScript固有のJSONオブジェクトを返すのは理にかなっているかもしれません。あなたのコントローラにajax GETプロパティを追加して、ModelAndViewを返す代わりにプレーンJSONをレスポンスボディに出力するだけかもしれません。プロトタイプでonSucessを使用してみてください。たぶん、その後

function submitNewAjxCall() 
{ 
new Ajax.Request('SimpleApp/home.htm?ajax=true', 
{ 
    method: 'post', 
    parameters: $('formId').serialize(true), 
    onComplete: function(transport) 
    { 
    alert(transport.responseText); 
    } 
}); 
} 

編集作業かもしれない:

@RequestMapping(value = "/dosomething.do", method = RequestMethod.GET, params = "ajax=true") 
public void getByName(
    @RequestParam(value = "name", required = true) String name, 
    HttpServletResponse response 
    ) 
{ 
    response.setContentType("application/json"); 
    try 
    { 
    OutputStreamWriter os = new OutputStreamWriter(response.getOutputStream()); 
    List<DomainObjects> result = this.domainObjectService.getByName(name); 
    String data = new JSONSerializer().serialize(result); 
    os.write(data); 
    os.flush(); 
    os.close(); 
    } catch (IOException e) 
    { 
    log.fatal(e); 
    } 
} 
+0

Spring Controllerでは、JSONとして直接出力ストリームに出力を書き戻す必要があります。既存のコントロールを拡張してこの機能を提供する必要があります。 – Rajat

+0

Flexjsonをエンコーダとして使用して、基本的なJSONコントローラを作成しました。私は春のコントローラの例も追加しました。 – Daff

関連する問題