4

我正在使用 Jquery 发送 AJAX POST 请求。成功时我需要将用户重定向到不同的页面,失败时我想留在页面上使用相同的数据。

我有2个问题。

  1. 在成功时,它不会重定向,它保持在相同的 URL 上并给出 415
  2. 在失败时,我得到一个 415 而不是渲染页面。

这是我的代码:

 var jsonResponse = [];
 //jsonResponse is being constructed from the form data, on submit.

 var req = {
            "name" : "${name}",
            "id" : "${id}",
            "data" : jsonResponse
    };


 $.ajax({
        url: "url",
        type: "POST",
        dataType: 'json',
        contentType:'application/json',
        async: false,
        data: JSON.stringify(req),
        success: function(result) {

            url = window.location.href;
            url = url.replace("processData", "getData");
            alert(url); //prints localhost:8000/getData
            location.href = url; //stays on localhost:8000/processData
        },
        error: function() {
            alert("--- Failure ---");
            // should stay on same page with the previous data, but
            //returns a 415.
        }
    });

url1 的控制器

 @RequestMapping(value = "processData", method = RequestMethod.POST)
public String post( Model model,
                    HttpServletRequest httpServletRequest, 
                    @RequestBody FormModel model) {

}

url2 的控制器:

@RequestMapping(value = "getData", method = RequestMethod.GET)
public String get(Model model, HttpServletRequest httpServletRequest)
{
}

我附上了我收到的错误消息的快照。 在此处输入图像描述

我在这里做错了什么?

4

1 回答 1

0

问题出在表格上。我有一个提交按钮,它也在 AJAX 调用结束后提交数据。所以我不得不删除该功能。

最初:

<input type="Submit" value="Submit" />

现在:

<input type="button" value="Submit" />

更好的方法是覆盖默认的提交功能。

 $('form').on('submit', function(e) {
    e.preventDefault();

这里是我问的一个问题的答案:Form Processing via AJAX - Avoiding both GET & POST Requests from getting generated

于 2015-10-05T09:00:01.340 回答