【问题标题】:how to call spring mvc3 with jquery ajax post between two applications?如何在两个应用程序之间使用 jquery ajax post 调用 spring mvc3?
【发布时间】:2012-09-27 14:53:50
【问题描述】:

我在服务器上托管了两个 Web 应用程序。从一个我试图做 $.post 到第二个应用程序(spring mvc3)。我能够成功点击第二个应用程序的 url,但我没有得到 ajax 调用的响应。

App1 JS 代码 (http://localhost:7777/app1/test.html) -

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

App2 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";
            }
        }

【问题讨论】:

  • 这里没有足够的信息来帮助您。当您在浏览器之外执行请求时,POST /app2/doSomething 会返回什么,例如在命令行中使用 curl?你怎么知道你没有得到回复 - 你的响应处理程序似乎只发出警报。您的浏览器的开发工具会向您显示什么作为对 /app2/doSomething 的 HTTP 调用返回的响应?
  • 它们是否部署在同一个应用服务器实例中并且具有相同的域 - 否则可能只是浏览器阻止了跨域请求。
  • 也许您的post 呼叫缺少“.html”? $.post("http://localhost:8080/app2/doSomething.html...
  • @BijuKunjummen - 是的,我也担心这是一个跨域请求。在这种情况下有什么解决方案?

标签: java jquery spring-mvc


【解决方案1】:

我通过从我的 jquery post call 中删除“json”类型来实现它。

$.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";
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 1970-01-01
    • 2018-03-29
    • 1970-01-01
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多