2013-08-22 5 views
0

J'ai un formulaire pour modifier l'utilisateur et je souhaite insérer les données utilisateur de la base de données dans les champs des formulaires. Ce que je fais estParamètre jQuery Valeur du champ de saisie

Lien

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

Script

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

Formulaire

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

Mon contrôleur retourne au printemps suivant (en emballage j'ai champ login)

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

Mais le formulaire est vide. J'ai également essayé de définir des valeurs manuelles mais toujours pas d'utilisation. S'il vous plaît aidez-moi à définir la valeur du champ de saisie.

+1

Avez-vous vérifié la console pour des erreurs? Quelle est la valeur renvoyée dans 'resp'? –

+0

vous avez besoin de voir ce qui revient, il ne peut pas traiter comme json. Ajoutez dataType: 'json' à votre méthode ajax. – carter

+0

Aucune erreur dans la console. La valeur de 'resp' devrait être l'entité, qui a le champ' String login' – qiGuar

Répondre

0

Vous devez envoyer vos données de formulaire avec votre demande de publication.

$.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); 
     } 
    }) 
} 

devrait fonctionner très bien, comme vous avez défini un ID pour l'entrée.

0

Pas tout à fait sûr que vous ayez la bonne commande, vous devez faire l'appel ajax en premier, puis ouvrir le dialogue jQuery?

De toute façon, vous pouvez fournir des données dans la boîte de dialogue comme suit;

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

Ensuite, dans votre boîte de dialogue, utilisez la méthode 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

Quelque chose ne va pas avec 'open:' car le formulaire n'apparaît pas. Lorsque je commente la boîte de dialogue 'ouvrir' apparaît, mais avec des champs vides. – qiGuar

+0

Utilisez les outils du navigateur pour définir des points d'arrêt en javascript et passer en revue. – richardb

+0

Ou essayez simplement de placer du texte dans le champ de la méthode ouverte. $ ("# elogin"). val ('Bonjour le monde'); – richardb

Questions connexes