J'ai un formulaire Ajax qui soumet correctement et cela envoie un modèle complet dans le contrôleur. Ce que je veux, c'est ajouter un Json à envoyer avec la demande. J'ai réussi à intercepter le message comme celui-ci:
$(document).ready(function() {
$("form").submit(function(e) {
if (e.originalEvent.explicitOriginalTarget.id == "submit") {
}
});
4 Réponses :
Si vous ne pouvez pas utiliser Ajax, vous devrez utiliser un champ masqué pour stocker les données JSON dans le formulaire. Sinon, votre JSON ne sera jamais envoyé au serveur. La spécification HTML énonce clairement les règles: seules les valeurs contenues dans les champs de saisie à l'intérieur du formulaire sont envoyées au serveur lorsque ce formulaire est soumis. P>
J'ai eu du mal à essayer d'éviter de faire ce que vous avez suggéré, mais il semble que c'est la seule façon qui fonctionne réellement. Après avoir envoyé le JSON comme une chaîne au contrôleur, je les désériorialisé et obtenu ce dont j'avais besoin. Si quelqu'un d'autre trouve une meilleure façon, je suis ouvert aux changements. Merci encore.
Si vous lisez les informations de la documentation de JQuery, vous pouvez remarquer que $. Post () Strong> a une option de données. Exemple: p> Vous pouvez obtenir vos valeurs de formulaire avec un
$ ("formulaire"). Serialize () Code> . p> p>
N'hésitez pas à utiliser jQuery ma fonction: utilisation: p> pas besoin d'utiliser ajax. p> < / p>
Comment j'enverrais un tableau d'objets en utilisant votre méthode? Il suffit de mettre le tableau dans AddHidenDidenPutData en tant que paramètre ne semble pas fonctionner, car je reçois le tableau NULL sur le contrôleur.
Faites-le comme ceci: {tableau: [1,2,3,4,5]} code>
Avec Int / Strings, cela fonctionne, mais pas avec des objets plus gros. :(
J'ai fini par utiliser un champ caché, bien que je déteste cette solution. Je pense que le problème est le type de contenu de ma demande, car le nombre de matrices est correct, seules les valeurs sont les par défaut (0, null, etc.). Je vous ai évité, cependant. Merci! :)
Pour faire le message AJAX, vous pouvez utiliser jquery.ajax (a plus d'options ), ou jquery.post
pour les données, vous pouvez utiliser échantillon:
-C'est-ce que publiera toutes les données, y compris les champs cachés contenant les données supplémentaires. P> $ $ ("Formulaire"). Serialize () Code> Pour obtenir tous les données du formulaire. Vous pouvez ensuite ajouter les données supplémentaires manuellement comme ceci var données = $ ("formulaire"). Serialize () + ", Autre = données" code>. Cela peut devenir désordonné si vous souhaitez ajouter beaucoup de données. L'option plus facile serait d'ajouter des champs cachés à l'intérieur du formulaire et il sera inclus dans les données lorsque vous appelez Serialize () code> p> $.post('www.magicurl.com/api', $("form").serialize(),
function (data) {
//process data from server
});
Avez-vous essayé d'utiliser $ .AJAX () pour poster vos données
@Ashirvadsingh qui fonctionnerait probablement, mais je voulais conserver la fonctionnalité actuelle, les champs étant définis automatiquement (HTML.editororfor (), etc.).