Spring MVC 中的 Ajax 发布请求

乐视938

我目前正在尝试从 JavaScript onchange 处理程序调用 ajax 请求来调用 Spring MVC 控制器。我相信我当前在视图中调用 URL 的方式是错误的,因为当触发事件并调用 url 时,在浏览器上收到404 错误如果我的所有设置都正确,任何人都可以发光吗?这是我的代码:

@Controller
public class DataTableController 
{     
    @RequestMapping(value = "/table", method = RequestMethod.GET)
    public String home(Model model) throws JsonGenerationException, JsonMappingException, IOException 
    {
        List<String> gpnList = new ArrayList<GPN>();
        gpnList.add("GPN-1"); gpnList.add("GPN-2"); gpnList.add("GPN-3"); 
        model.addAttribute("gpnList", mapper.writeValueAsString(gpnList)); 
        return "index"; //name of my view
    }

    @RequestMapping(value = "/getsector", method = RequestMethod.POST)
    public @ResponseBody String getSector(@RequestParam("market")String market) throws JsonGenerationException, JsonMappingException, IOException
    {
        List<String> sectors = new ArrayList<String>();
        sectors.add("Auto"); sectors.add("Industrial"); sectors.add("Analog");
        ObjectMapper mapper = new ObjectMapper();
        return mapper.writeValueAsString(sectors);
    }
}

查询代码:

$(document).ready(function()
{
    document.getElementById("markets").onchange =  function()
    { 
        var market = $("select[id='markets'").find('option:selected').text();
        var filters = { "market" : market }
        filters = JSON.stringify(filters);

        $.ajax({
            url: "/getsector",
            type: "POST",
            dataType : 'json',
            contentType : "application/json",
            data: JSON.stringify(filters),
            success: function(response) 
            {
                console.log("sucess!");
            },
            error: function(e){
                console.log("ERROR: ", e);
            }
        });
    }
}); 

我想要实现的主要目标是能够通过 ajax 调用来调用我的控制器。任何有关 Spring Controller 映射和约定的其他提示将不胜感激。提前致谢!

阿尔卑斯山

如果您请求信息,您应该使用GETrequests 而不是POST.

您正在@RequestParam与 json 有效负载混合如果您想将过滤器作为请求参数接收,则必须使用 url,而不是 json 负载,使用以下内容:

$(document).ready(function()
{
    document.getElementById("markets").onchange =  function()
    { 
        var market = $("select[id='markets'").find('option:selected').text();

        $.ajax({
            url: "/getsector?market="+market,
            type: "GET",
            success: function(response) 
            {
                console.log("sucess!");
            },
            error: function(e){
                console.log("ERROR: ", e);
            }
        });
    }
}); 

@RequestMapping(value = "/getsector", method = RequestMethod.GET)
public @ResponseBody String getSector(@RequestParam("market")String market) throws JsonGenerationException, JsonMappingException, IOException
{
  .... your logic.
}

另一方面,如果您真的想使用POST带有 json 负载的请求,则需要@RequestBody在控制器上使用并将 json 对象绑定到具有相同属性的 bean。

@RequestMapping(value = "/getsector", method = RequestMethod.POST)
public @ResponseBody String getSector(@RequestBody Market market) throws JsonGenerationException, JsonMappingException, IOException
{
    List<String> sectors = new ArrayList<String>();
    sectors.add("Auto"); sectors.add("Industrial"); sectors.add("Analog");
    return sectors;
}


public class Market
{
  String market;

  //getter and setter...
}

请记住,您的 javascript 也是错误的,您使用了JSON.stringify两次。

如果您使用@ResponseBody并且 spring 配置良好,它将在返回响应时为您进行序列化,因此您不必手动执行此操作。

此代码未经测试,仅供您参考。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spring MVC发布请求

来自分类Dev

Spring MVC发布请求

来自分类Dev

在Spring MVC中执行发布请求时出错

来自分类Dev

Spring MVC + Ajax JSON发布

来自分类Dev

Spring MVC处理AJAX请求

来自分类Dev

Spring MVC Ajax 400错误请求

来自分类Dev

Ajax使用Spring MVC获取请求

来自分类Dev

Spring MVC 400错误请求Ajax

来自分类Dev

Ajax调用Spring MVC Controler错误的请求

来自分类Dev

Spring MVC AJAX错误请求错误

来自分类Dev

从Ajax到Spring MVC的请求。404错误

来自分类Dev

Ajax调用Spring MVC Controler错误的请求

来自分类Dev

Spring MVC中的请求响应

来自分类Dev

Spring MVC中的PUT请求

来自分类Dev

从发布请求中捕获 AJAX 错误 (422)

来自分类Dev

在mvc url中的ajax发布之后很长

来自分类Dev

客户端发送的请求在spring mvc,ajax中在语法上不正确

来自分类Dev

从python文件中的ajax发布请求获取发布数据

来自分类Dev

AJAX在Spring MVC中返回404

来自分类Dev

Spring MVC:将绑定请求参数发布到通用列表

来自分类Dev

带有AJAX的Spring Security发布请求(注销)

来自分类Dev

在Spring MVC中修改请求URI

来自分类Dev

通过ajax向Spring MVC控制器请求图像

来自分类Dev

在Ajax请求之后填写Bootstrap表(JSP和Spring MVC)

来自分类Dev

在Spring MVC中通过Ajax进行第二次更新请求后,JSON.stringify变空

来自分类Dev

Ajax中的MVC Ajax

来自分类Dev

MVC中Ajax请求/数据请求的位置在哪里?

来自分类Dev

Ajax发布请求后在php中解析json

来自分类Dev

超时在ajax发布请求中不起作用