lors de la soumission de mon formulaire à l'aide du plugin formulaire jQuery, la requête reçue par la vue cible est différente de celle reçue lorsque le formulaire est soumis de manière standard (sans javascript), mon modèle Django ne s'affiche pas comme prévu. Lorsqu'il est soumis de la manière standard, le modèle génère les erreurs de formulaire (le "formulaire. [Nom_zone] .errors), mais pas lors de la soumission via javascript." En utilisant le javascript, comment puis-je obtenir une requête permettant rendre le modèle tel n'utilisant la norme soumettre le code et la diff entre les objets demande reçue dans les deux cas sont présentés ci-dessousProblème avec le formulaire Django lors de la soumission du plugin formulaire jQuery
grâce juillet
code javascript:.
var is_geocoded = false;
var interval;
$(function(){
$("#submit").click(function() {
var options = {
beforeSubmit: getPosition, // pre-submit callback
success: showResponse // post-submit callback
};
// bind form using 'ajaxForm'
$('#addresto').ajaxForm(options);
});
});
function getPosition() {
var geocoder = new GClientGeocoder();
var country = $("#id_country").val();
var city = $("#id_city").val();
var postal_code = $("#id_postal_code").val();
var street_number = $("#id_street_number").val();
var street = $("#id_street").val();
var address = street_number+", "+street+", "+postal_code+", "+city+", "+country;
geocoder.getLatLng(address, function(point) {
if (point) {
$("#id_latitude").val(point.lat())
$("#id_longitude").val(point.lng())
is_geocoded = true;
} else {
is_geocoded = true;
}
});
interval = setInterval("doSubmit()", 500);
return false;
}
function doSubmit() {
if (is_geocoded) {
$("#addresto").ajaxSubmit();
clearInterval(interval);
}
}
Django modèle morue e:
<form id="addresto" action="" method="POST">
<p><label for="id_name">Name:</label>{{form.name.errors}} {{ form.name }} </p>
<p><label for="id_country">Country:</label>{{form.country.errors}} {{ form.country }} </p>
<!-- more stuff -->
<p style="clear: both;"><input type="Submit" id="submit" value="Submit" /></p>
</form>
est ici la différence entre les demandes reçues par la vue à la norme soumettre et javascript soumettre:
[email protected]:~$ diff javascript_submit standard_submit
7c7
< 'CONTENT_TYPE': 'application/x-www-form-urlencoded; charset=UTF-8',
---
> 'CONTENT_TYPE': 'application/x-www-form-urlencoded',
24c24
< 'HTTP_ACCEPT': '*/*',
---
> 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
28d27
< 'HTTP_CACHE_CONTROL': 'no-cache',
33d31
< 'HTTP_PRAGMA': 'no-cache',
36d33
< 'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest',
70c67
< 'wsgi.input': <socket._fileobject object at 0x891d064>,
---
> 'wsgi.input': <socket._fileobject object at 0x898b09c>,
+1 bien que je préfère personnellement donner aux requêtes ajax un espace de noms d'URL différent, peut-être juste en mettant 'json' dans le chemin quelque part. – SingleNegationElimination
Merci pour les conseils. Comme je n'ai pas vraiment besoin d'ajax ici, je vais juste utiliser javascript, pour ne pas avoir à changer d'avis. – jul