2013-08-22 133 views
0

我有一个表单来编辑用户,我想从数据库插入用户数据到表单的字段。我做的是jQuery设置输入字段值

链接

<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> 

我的春天控制器返回以下(在包装我有场login

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

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

+1

您是否检查了控制台的错误? 'resp'中返回的值是什么? –

+0

你需要看看回来什么,它可能不被视为json。将dataType:'json'添加到您的ajax方法中。 – carter

+0

控制台没有错误。 'resp'的值应该是实体,字段'String login' – qiGuar

回答

0

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

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

应该工作得很好,因为你已经设置了输入自己的ID。

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); 
     } 
    } 
}); 
+0

由于表单没有出现,“open:'有些问题。当我评论'打开'对话框出现,但空白字段。 – qiGuar

+0

使用浏览器工具在JavaScript中设置一些断点并逐步完成。 – richardb

+0

或者只是尝试在开放方法中填入一些文本到字段中。 $(“#elogin”)。val('Hello World'); – richardb