【问题标题】:POST String array from AJAX jQuery to MVC Spring Server without response from the server从 AJAX jQuery 到 MVC Spring Server 的 POST 字符串数组没有来自服务器的响应
【发布时间】:2015-01-18 20:49:35
【问题描述】:

我正在尝试将一个字符串数组从 jQuery 发布到 MVC Spring Server。

邮政编码:

    var respostas=["hello","hi","bye"];
      var urlprova = 'getlistmap';
      $.ajax({
        type: 'POST',
        url: urlprova,
        dataType: 'json',
        data: JSON.stringify(respostas),
        success: function (data) {
            alert("updated successfully");
          },
        error: function (xhr, ajaxOptions, error) {
            alert(err.status);
            alert('Cannot update, ' + err.responseText);
        }

});

控制器方法:

  @RequestMapping(value="getlistmap", method = RequestMethod.POST)
    public @ResponseBody String getListMapfromOneProject(HttpServletResponse response, Principal p,@RequestBody String respostas) throws IOException {
        System.out.println("A AJAX call has been detected!");
    return "ok!";
    }

我尝试了很多来自谷歌的代码,但其中任何一个似乎都可以正常工作,所以我在上面输入了我认为是最好的选择。

有什么想法吗?

更新:@Guffa 给我更正后,这个 POST 的响应是,HTTP 403 Forbidden 他说问题可能是服务器没有映射 url,但我们可以证明这是映射的:

2014-11-20 18:44:53.427 INFO 6724 --- [main] o.s.w.s.handler.SimpleUrlHandlerMapping:将 URL 路径 [/] 映射到 [class org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler] 类型的处理程序上 2014-11-20 18:44:53.466 INFO 6724 --- [main] swsmmaRequestMappingHandlerMapping:映射“{[/login],methods=[GET],params=[],headers=[],consumes=[],生产=[],custom=[]}" 到公共 org.springframework.web.servlet.ModelAndView palmaslab.mapas.controller.myController.login() 2014-11-20 18:44:53.466 INFO 6724 --- [main] swsmmaRequestMappingHandlerMapping : Mapped "{[/getlistmap],methods=[POST],params=[],headers=[],consumes= [],produces=[],custom=[]}" 到公共 java.lang.String palmaslab.mapas.controller.myController.getListMapfromOneProject(javax.servlet.http.HttpServletResponse,java.security.Principal,java.lang.String ) 抛出 java.io.IOException 2014-11-20 18:44:53.467 INFO 6724 --- [main] swsmmaRequestMappingHandlerMapping:映射“{[/addProjectPostoSaude],methods=[GET],params=[],headers=[],consumes=[],生产=[],custom=[]}" 到公共 org.springframework.web.servlet.ModelAndView palmaslab.mapas.controller.myController.addProject()

...

【问题讨论】:

    标签: jquery ajax spring spring-mvc post


    【解决方案1】:

    您要么得到响应,要么得到错误。如果您查看错误控制台,您很可能会在那里找到一条错误消息,说明您正在尝试使用未定义的 err 变量。

    更正错误处理程序,你会看到你得到了什么错误:

        error: function (xhr, status, error) {
            alert(status);
            alert('Cannot update, ' + error);
        }
    

    【讨论】:

    • 好的,谢谢!,错误响应是Cannot update, Forbidden。有什么想法吗?
    • @AlbertoCrespo:这意味着服务器以HTTP 403 Forbidden 响应。一个可能的原因是映射与请求不匹配,因此没有处理请求的操作。
    • URL 似乎已映射。我已经更新了问题。您可以看到该 URL 在 MVC Spring Server 中显示为映射。
    • @AlbertoCrespo:我认为这是因为您发送的 JSON 与 action 参数的数据类型不匹配。 JSON 将被反序列化为一个字符串数组,但 action 参数是一个字符串。这里的答案应该会有所帮助:stackoverflow.com/questions/16467035/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多