Ajax将数据传递到URL

时间:2018-07-16 13:46:39

标签: java ajax model-view-controller

我想知道有人可以帮我吗?我想通过ajax实现的目的是将参数传递给URL,而不是传递给查询字符串,因为我不想公开参数。

所以我有一个包含Index方法的页面:

    public ActionResult Index(int qualID)
    {
        //do stuff with qualID and load up a model

        return PartialView("ICTEnrolmentForm", myNewModel);
    }

然后(在一个完全独立的页面上),我有以下的ajax块:

<script>
    var enrolmentURL = "/enrolment/";
    $('.enrolNow').click(function (e) { 
        var qualID = $(this).attr('data-qual');
        $.ajax({
           url: enrolmentURL,
           type: 'POST',
           data: { 'qualID': qualID },
           success: function(model)
           {   
                window.location = enrolmentURL;
           }
        });
    });
</script>

如果在ActionResult方法上创建一个断点,我可以看到该方法正在被调用(填充了QualID),但是随后触发了重定向,并且我得到了Null参数错误。

我显然真的很茫然,但是如果有人能指出我的方式的错误,那将不胜感激。

谢谢, C

3 个答案:

答案 0 :(得分:0)

如果您使用的是Spring Boot,请将其添加到控制器中:

@RequestMapping(value = "/enrolment/",method = RequestMethod.POST)
    public ActionResult Index(@RequestParam(value = "qualID" , required = false) String qualID)
        {
            //do stuff with qualID and load up a model

            return PartialView("ICTEnrolmentForm", myNewModel);
        }

答案 1 :(得分:0)

我是否认为这是C#代码而不是Java(如TAG部分所述)?

问题在于,如果您通过HTTP调用控制器方法,则qualID可以为NULL。但是,qualID的数据类型为Int32,不能为null。因此,您必须将数据类型和方法签名更改为

public ActionResult Index(int? qualID)

现在,允许qualID为NULL(您必须在使用代码中的变量并抛出适当的错误消息之前进行检查)。此外,检查您定义的路线。

答案 2 :(得分:0)

不确定这是否是答案,但是我已经找到了解决方法,基本上我在另一个方法中进行了ajax发布,该方法填充了模型并将模型放入会话变量中,然后在成功后我将重定向到将会话模型加载到页面上的URL。

URL保持整洁,这是我追求的主要目标。

感谢您的宝贵时间。