【问题标题】:How do I send data via an Ajax Query to a Controller and then open a new JSP page as the Controller's return type?如何通过 Ajax 查询将数据发送到控制器,然后打开一个新的 JSP 页面作为控制器的返回类型?
【发布时间】:2018-03-22 18:58:47
【问题描述】:

这是我遇到的问题的简化版本。如何通过 AJAX 查询将数据发送到 Spring Boot Controller,然后打开一个新的 JSP 页面?当我将数据发送到 AJAX 查询中的 url 到我的控制器类中的匹配 URL 时,它似乎在该方法中运行代码,但没有打开 JSP(或返回类型)。

例如,如果我要从 Ajax 查询中发送以下数据

var hello = "Hello World!";

$.ajax({
         type: "POST",
         url: "/message1",
         data: { 
                 message: hello, 
               }, 
         datatype: 'json'
      });
}

到我的控制器类中的这个方法

@RequestMapping(value = "/message1", method = RequestMethod.POST)
public String MessageReceiver(@RequestParam("message")String message, 
                              BindingResult bindingResult,              
                              Model model) {

    System.out.println(message);

    return "NewPage";
}

"Hello"会在控制台打印,但是JSP页面NewPage会打不开,不会提示错误?

通常,如果我通过 href 链接或按钮等调用控制器中的 url(例如 /message1),NewPage JSP 页面将打开。 AJAX 查询似乎缺少一些东西。我是否必须将 Ajax Query 中的 URL 更新为类似于 /message1/NewPage 的内容(尝试过,没有用),或者向控制器添加一些内容,因为 NewPage JSP 页面将无法打开。

【问题讨论】:

  • ajax中有成功和错误的回调函数,成功时你应该检查你的服务器是否返回“NewPAge”,如果是,打开新的JSP页面客户端。
  • 您好,感谢您的回复,您有什么示例/文档可以让我看看吗?
  • Ajax 文档:(api.jquery.com/category/ajax),下面还添加一个答案作为示例

标签: javascript jquery ajax jsp


【解决方案1】:

将成功回调函数添加到您的 ajax 中,如下所示:

$.ajax({
         type: "POST",
         url: "/message1",
         data: { 
                 message: hello, 
               }, 
         datatype: 'json',
         success: function(data){
               if(data === "NewPage"){
                    //Open new page
               }
         }
      });
}

【讨论】:

  • 我在//Open new page下面添加了以下行,页面仍然无法打开。 ` window.open("localhost:8080/NewPage");`。这只是我试图错误地打开页面吗?
  • @user9269133 是的,做 window.open("/ControllerName/ActionMethodName");
  • 嘿瑞恩感谢您的回答。我尝试了以下window.open("/message1/NewPage");。它似乎不起作用,所以我添加了一个 error 回调作为调试,我在其中检查了 data != "NewFile" 是否仍然没有任何反应。
  • 嗯。 message1 是您的控制器名称吗?还有错误:只有在 ajax 请求出错时才会为您提供结果,您应该在本地运行它并通过 Chrome 的开发工具或您熟悉的其他浏览器在 ajax 请求的成功部分设置断点,然后从那里开始.这是一个讨论在新选项卡中打开页面的链接 (forums.asp.net/t/…)
  • 嘿 Ryan 我根据您的回答成功了,感谢您的帮助。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-26
相关资源
最近更新 更多