J'ai besoin de sérialiser toutes les entrées d'un formulaire dans une chaîne JSON.
Avec l'aide de Ce message , je peux créer une chaîne valide comme ci-dessous. :
var dataJSON = $.toJSON($('#form').serializeObject()); alert(dataJSON); $.ajax({ type: "POST", url: "ajax.php", data: 'Query01=01&Query02=02', dataType: 'json', success: function(data){ if (data==1){ $('#wrap').load('ajax.php',dataJSON); } } });
5 Réponses :
Ceci est le comportement par défaut de $. Ajax () code>
. Vous pouvez le modifier en définissant l'option processdata code> à
false code>. Voir
$. Ajax () Code> Options
.
processData Boolean Default: true
J'ai testé les informations que vous avez énumérées ci-dessus sans chance. D'après ce que je peux voir les options $ .Ajax n'effectuez pas la fonction de $ imbriquée. Des idées sur la façon dont je pourrais changer les mêmes options pour $ .charger?
@ticallian Je ne sais pas pourquoi vous avez besoin de la fonction de charge dans la fonction de réussite de toute façon. Pouvez-vous ne pas simplement obtenir tout ce dont vous avez besoin dans la demande $ .Ajax à l'aide de la valeur JSON?
ProcessData: False Code> Ressourdi de rien
Après le nettoyage de Google et du site de JQuery, je suis arrivé à la conclusion personnelle que le Pour contourner cela, j'ai utilisé le niveau bas Mon code final: P> $. La fonction code> convertira toute variable transmise en tant que querystring (comme mon problème d'origine ci-dessus décrit) .
Si vous souhaitez transmettre une chaîne JSON à travers elle, il doit être dactylographié manuellement.
$. Ajax code> fonction à la place.
Un avantage de l'utilisation de cette méthode signifiait que je pourrais également envoyer des données postales à l'aide de la fonction standard
. Sérialiser () code> fonction plutôt que de convertir mes données de formulaire en JSON. P>
var formData = $('#form').serialize();
$.ajax({
type: "POST",
url: "ajax.php",
data: 'Query01=01&Query02=02',
dataType: 'json',
success: function(data){
if (data==1){
$.ajax({
type: "POST",
url: "ajax.php",
data: formData,
success: function(html){
$("#wrap").replaceWith(html);
}
});
}
}
});
Puisque vous utilisez php comme côté serveur. Je suppose que vous auriez pu utiliser la fonction PHP Stripslashes () code>
Assurez-vous que vous
echo json_encode($_GET['varwithurl'])
<html> <head> <script src="resources/jquery-2.1.0.js"></script> <script src="resources/jquery.serializejson.min.js"></script> </head> <body> <script> $(document).ready(function(){ $("#simplepost").click(function(e){ var MyForm = $("#appForm").serializeJSON(); console.log(MyForm); $.ajax( { url: "rest/emp/create", type: "POST", data: JSON.stringify(MyForm), contentType: "application/json; charset=utf-8", dataType: "json", success:function(maindta){ alert(maindta); }, error: function(jqXHR, testStatus, errorThrown){ alert(errorThrown); } }); e.preventDefault(); //STOP default action }); }); </script> <h2>Hello World!</h2> <form id="appForm" method="POST"> EmployeeID:<input type="text" name='id' value="" /> Employee Name:<input type="text" name="name" value=""/> <br> <input type="button" value="Submit" id="simplepost" /> </form> </body> </html>
Les décharges de code sans explication sont rarement utiles. S'il vous plaît envisager d'ajouter un contexte à votre réponse.
Je l'ai fait pour que cela fonctionne avec quelque chose comme ceci: p> $data = json_decode(stripslashes($_POST['json_data']));
Vous appelez
.ajax () code>, puis faisant une autre demande AJAX avec
.charger () code>. Est-ce exact?
Roatin, c'est correct. L'exemple ci-dessus est simplifié de mon script actuel. Le script actuel publie des données à l'aide de $ .AJAX qui doit être validée, en cas de validation réussie, la fonction $ .Load fonction charge HTML généré à partir de données publiées par la chaîne JSON.