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.