将我的变量放在Ajax请求函数中的最佳方法是什么

时间:2017-02-09 11:13:00

标签: ajax jsp spring-mvc

上下文:我正在使用JSP进行视图的Spring WEB MVC应用程序。

在我的JSP页面中,我有一个输入文本字段,实际上是一个jquery日期范围选择器:

<input type="text" name="daterange" value="01/01/2017 - 01/31/2017" />

我认为在这个ajax函数中我可以检索输入日期范围的值并将其传递给var daterange?像这样:

function filterByDate() {
                $.ajax({

                    url : 'outbatch',
                    data : ({}),
                    success : function(data) {
                        var daterange = document.getElementById("daterange").value();

                    }
                });
            }

这是我的控制器(我没有说它太长了不看看返回null我只是把它用于显示)方法谁将更新我的批处理并从我的模型中获取信息:

 @RequestMapping(value = "/outbatch", method = RequestMethod.GET)
public String updateEblnotif(Model model) {

    String out_path = env.getProperty("notif_out");
    List<Doc> doc_list = unmarshal(out_path, "LETTERS");
    System.err.println("jbb*********" + doc_list.size());

    Set<String> formname_set = new HashSet<>();
    `......
     return null`}    

我的问题是:我在哪里将Ajax函数调用中的变量传递给Controller?我知道,如果我没有弄错,我可以将其他几个选项参数传递给Ajax函数,如'data','datafilter','datatype'?这是请求日期在我的模型中假设Java日期对象

的最佳方式

注意:我是初级开发人员,这是我的第一个项目。我的模型使用带休眠的DAO映射到数据库。

感谢各位的帮助!

1 个答案:

答案 0 :(得分:0)

首先,您应该在客户端获取参数的值,这样您就可以简单地向标记添加id属性,以便getElementById可能有用,请尝试以下操作:< / p>

<input type="text" name="daterange" id="daterange" value="01/01/2017 - 01/31/2017" />

现在让我们假设您的函数负责检索所需的值并使用AJAX将其作为参数发送到服务器端,所以很简单:

function filterByDate() {
         var daterange = document.getElementById("daterange").value();
                $.ajax({
                    url : 'outbatch',
                    data : {"daterange":daterange}, //here you send the daterange over an Ajax request and by default it's sended with a GET method
                    success : function(data) {
                        alert(data); //here you will see an alert displaying the callback result coming from your spring controller
                    }
                });
            }

现在我们将日期范围发送给控制器,因此我们必须将其恢复到那里:为此,您只需尝试以下方法:

    @RequestMapping(value = "/outbatch", method = RequestMethod.GET)
    public @ResponseBody String updateEblnotif(Model model,@RequestParam("daterange") String daterange) {
    //so here you're ahving the daterange parameter in controller , if you want to display it in the alert , you can send it in the return like this,
         String date = "the daterange is "+daterange
         return date;
} 

我希望这对你来说很明显。