Ajax表单选择更改不会出现在jQuery .serialize / .val中

时间:2016-05-21 10:16:42

标签: javascript jquery ajax forms

我正在使用.load jQuery函数检索表单并将其放在文档正文中。

之后,我正在更改选择值(手动)并尝试使用ajax .post请求保存表单。

jQuery以任何方式检索的选择值(使用.val或sereilize)都不会更改。值保持不变。

如果没有 prevetnDefault (使用普通的POST请求),表单会按预期保存。但是select或.sereilize表单上的.val都返回旧的选择值(未真正选择)。

<form
       id="phrase-fake-form-12243"
       method="POST"
       action="/phrase-fake/change-group/12243/3">

            <input type='hidden' name='csrfmiddlewaretoken' value='UQuHH3ahAnBaSUPsCBaF1QKF4I0O48AO' />
            <select name="group" id="phrase-fake-modal-group-dropdown">

                    <option value="20393"
                            selected="selected">
                        1
                    </option>

                    <option value="20405"
                            >
                        2
                    </option>

                    <option value="20417"
                            >
                        3
                    </option>
            </select>
            <input type="submit" value="Сохранить" class="ui button blue">
        </form>

JS:

<script>

$("#phrase-fake-form-12243").submit(function (event) {

    console.log($('#phrase-fake-form-12243').serialize())
    console.log($('#phrase-fake-modal-group-dropdown').dropdown('get value'))
    $.post('/phrase-fake/change-group/12243/3', $('#phrase-fake-form-12243').serialize())

    event.preventDefault();
});
</script>

我做错了什么?实际上它似乎是一个bug ..

1 个答案:

答案 0 :(得分:0)

尝试使用此库form2js

您只需要在jQuery对象上调用方法.toObject()。 例如,如果这是你的html

<form id="test">
...
</form>

您可以通过

获取所有表单元素值
var formObject = $("#test").toObject();