2013-08-22 128 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