0

我有一个表单来编辑用户,我想将用户数据从数据库插入到表单的字段中。我所做的是

关联

<a href="javascript:void(0)" onclick="editUser('/edit/${user.login}')">Edit</a>

脚本

function editUser(url) {
$( "#edit-form" ).dialog( "open" );
$.ajax({
        url: url,
        type: "POST",
        success: function (resp) {            
        $('input[name="elogin"]').val(resp.login);
        }
    })
}

形式

<div id="edit-form" title="Edit user">
<p class="validateTips">All form fields are required.</p>
<form:form>
    <fieldset>
        <label for="elogin">Login</label>
        <input type="text" name="elogin" id="elogin" class="text ui-widget-content ui-corner-all" />
    </fieldset>
</form:form>
</div>

我的 Spring 控制器返回以下内容(在包装器中我有字段login

@RequestMapping(value="/edit/{userLogin}", method=RequestMethod.POST)
@ResponseBody
public Wrapper edit(@PathVariable String userLogin) {
    return wrapper.wrap(userService.findByLogin(userLogin));
}

但是表格是空的。我也尝试设置手动值,但仍然没有用。请帮我设置输入字段值。

4

3 回答 3

0
function editUser(url) {
$( "#edit-form" ).dialog( "open" );
$.ajax({
        url: url,
        type: "POST",
        success: function (resp) {            
        $('#elogin').val(resp.login);
        }
    })
}

应该可以正常工作,因为您已经为输入设置了 ID。

于 2013-08-22T14:42:38.483 回答
0

您应该将您的表单数据与您的发布请求一起发送。

$.ajax({
    url: url,
    type: "POST",
    data:$('form').serialize(),
    success: function (resp) {            
    $('input[name="elogin"]').val(resp.login);
    }
})
于 2013-08-22T14:42:36.073 回答
0

不太确定您的顺序是否正确,您肯定会先进行 ajax 调用然后打开 jQuery 对话框吗?

无论哪种方式,您都可以向对话框中提供数据,如下所示;

//call ajax method to get value you want to show.
var somevariable = etc.....
var dto = {
    loginName: somevariable
}
$( "#edit-form" ).data('params', dto).dialog( 'open' );

然后在您的对话框中使用 open() 方法。

$("#edit-form").dialog({
    bgiframe: true,
    autoOpen: false,
    height: 280,
    width: 320,
    draggable: false,
    resizable: false,
    modal: true,
    open: function () {
        //so values set in dialog remain available in postback form
        $(this).parent().appendTo("form");

        //get any data params that may have been supplied.
        if ($(this).data('params') !== undefined) {
            //stuff your data into the field
            $("#elogin").val($(this).data('params').loginName);
        }
    }
});
于 2013-08-22T14:49:39.437 回答