2012-09-27 23 views
0

我有兩個Web應用程序託管在服務器上。從一個我試圖做$ .post到第二個應用程序(spring mvc3)。我能夠成功地擊中第二個應用程序的url,但我沒有得到ajax調用的迴應。如何在兩個應用程序之間使用jquery ajax post調用spring mvc3?

應用1 JS代碼(HTTP://本地主機:7777/APP1/test.html的) -

var serialisedFormData = $("form").serialize(); 
$.post("http://localhost:8080/app2/doSomething", serialisedFormData, function (data) { 
     alert("job done");   
    }, "json"); 

應用2的Java代碼 -

@RequestMapping(value = "/doSomething") 
     public @ResponseBody String doSomething(HttpServletRequest request, 
@RequestParam("d") String data) { 

      try { 
        ... do something here ... 
        return "done"; 
      } 
      catch (Exception e) { 
       logger.debug("Exception occured when doing something", e); 
       return "failure"; 
      } 
     } 
+0

沒有足夠的信息來幫助你。當您在瀏覽器外執行請求時,例如在命令行中使用'curl',什麼'POST/app2/doSomething'返回?你怎麼知道你沒有得到迴應 - 你的迴應處理程序似乎只是發出警報。瀏覽器的開發人員工具向您顯示對'/ app2/doSomething'的HTTP調用返回的響應是什麼? –

+1

它們是否部署在同一個應用程序服務器實例中並具有相同的域 - 否則可能僅僅是瀏覽器阻止了跨域請求。 –

+0

也許你的'post'調用丟失了「.html」? '$ .post(「http:// localhost:8080/app2/doSomething.html ...' – GriffeyDog

回答

0

我通過刪除實現它 「JSON」 型從我的jquery post調用。

$.post("http://localhost:8080/app2/doSomething", serialisedFormData, function (data) { 
     alert("job done");   
    }); 

並增加了頭我的反應

@RequestMapping(value = "/doSomething") 
     public @ResponseBody String doSomething(HttpServletRequest request, HttpServletResponse response, @RequestParam("d") String data) 
    { 

      try { 
        ... do something here ... 
        response.setHeader("Access-Control-Allow-Origin", "*"); 
        return "done"; 
      } 
      catch (Exception e) { 
       logger.debug("Exception occured when doing something", e); 
       return "failure"; 
      } 
     } 
相關問題