【问题标题】:Send formdata to Spring MVC using JavaScript Ajax使用 JavaScript Ajax 将表单数据发送到 Spring MVC
【发布时间】:2016-06-29 22:01:22
【问题描述】:

我在 JSP 中使用 JavaScript。我可以使用<form action> 将 formData 发送到 Spring Controller,但我现在需要通过 Ajax 发送。我没有使用 JQuery 或 AngularJS 或任何其他 JS 框架。

我的表格是:

<form:form  id="saveAddressForm" modelAttribute="address">
    <tr>
        <td><label>Address1</label></td>
        <td><input type="text" name="addressLine1"></td>
        <td><label>Address2</label></td>
        <td><input type="text" name="addressLine2"></td>
    </tr>
    <tr>
        <td><label>LandMark</label></td>
        <td><input type="text" name="londMark"></td>
        <td><label>City</label></td>
        <td><input type="text" name="city"></td>
    </tr>
    <tr>
        <td><label>Pincode</label></td>
        <td><input  type="number" name="pincode"></td>
        <td></td>
        <td><input type="submit" value="Save Addess" onsubmit="saveAddress()"></td>
    </tr>
</form:form>

JS函数:

function saveAddress(){
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    if (xhttp.readyState == 4 && xhttp.status == 200) {
        // On success i need to display a message.
    }
  };
xhttp.open("POST", "add_address.html", true);
xhttp.send();}

在这里,我的表单数据,即,地址对象不包括在请求中。

@RequestMapping(value = "/add_address", method = RequestMethod.POST)
public String addAddress(@ModelAttribute("address") Address address, Model map)
{

    // Services will be called here.
    return null;
}

我想,我缺少一些东西来添加我的对象来请求。

我在 SOF 中看到了几篇文章,它们使用 JQuery 或 AngularJS 解决了。我不知道这些。

编辑

思考如何改进我的问题。 我希望将“modelAttribute”发送到控制器。不是单独的参数,也不是通过 JS 框架工作。

【问题讨论】:

    标签: javascript ajax spring-mvc


    【解决方案1】:

    有什么问题?

    您需要添加参数来构建 Adress 对象。

    Send POST data using XMLHttpRequest

    【讨论】:

    • 我的对象不去控制器层
    • 检查您的 servlet 映射,如果可以,请删除 @ModelAttribute("address") Address address 以查看您是否传入了控制器。
    【解决方案2】:

    您可以使用 jquery 轻松序列化表单数据并随请求传递。

    这里是用 jquery 修改的代码。

    function saveAddress(){
        var xhttp = new XMLHttpRequest();
        var form = document.getElementById('saveAddressForm');
        var data = new FormData(form);
        xhttp.onreadystatechange = function() {
        if (xhttp.readyState == 4 && xhttp.status == 200) {
            // On success i need to display a message.
        }
      };
    xhttp.open("POST", "add_address.html", true);
    xhttp.send(data);}
    

    【讨论】:

    • 我没有使用 JQuery。
    • 好的..我在这里编辑了纯javascript代码
    • var data = new FormData(form);数据可以引用地址对象吗?在我的控制器中,我试图获取地址对象。不是单独的参数。可能吗??
    猜你喜欢
    • 1970-01-01
    • 2020-03-26
    • 2013-09-06
    • 2012-09-08
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多