Modifier: Le problème a été résolu, maintenant j'ai un autre problème. La variable de données ne renvoie rien quand elle devrait retourner "OK" ou "EXISTS".Impossible de créer un objet à partir d'une vue Ajax
J'ai un modèle avec un effet de superposition. Le modèle income.html a un formulaire et un bouton "Ajouter une nouvelle catégorie", lorsque vous cliquez dessus une nouvelle fenêtre est affichée (effet de superposition) avec un minuscule formulaire. Je ne sais pas pourquoi, mais la catégorie ne se crée pas. Il semble que j'ai des erreurs dans le script html mais je ne peux pas les identifier.
income.html:
(document).ready(function(){
$("#new_cat").live("click", (function() {
var cat_name = $("#nc").val();
if (cat_name) {
$.get("/cashflow/new_cat/0/", { name: cat_name, account: {{ account }} },
function(data){
if (data == "OK") {
$("#id_category").val(cat_name);
}
if (data == "EXISTS") {
var error = "The category already exists";
alert(error);
}
});
}
else {
var error = "Please enter a name";
alert(error);
}
}))
});
</script>
...
<form>{% csrf_token %}
<label for="name">Name:</label><input type="text" id="nc" />
<input type="submit" value="Submit" id="new_cat" />
</form>
views.py:
@login_required
def income(request, account_name):
account = account_name
if request.method == 'POST':
form = TransForm(user=request.user, data=request.POST)
if form.is_valid():
income = form.save(commit=False)
income.type = 0
income.account = Account.objects.get(
name = account_name,
user = request.user)
income.name = form.cleaned_data['name']
income.category = form.cleaned_data['category']
income.save()
uri = ("/cashflow/account/%s") % str(account_name)
return HttpResponseRedirect(uri)
else:
form = TransForm(user=request.user)
context = {
'TransForm': form,
'type': '0',
'account': account,
}
return render_to_response(
'cashflow/income.html',
context,
context_instance = RequestContext(request),
)
def new_cat(request, tipo):
if request.method == u'GET':
GET = request.GET
if GET.has_key(u'name'):
name = request.GET[u'name']
account = request.GET[u'account']
c = Category.objects.filter(namee=name, account=account)
if c:
s = "EXISTS"
else:
c = Category(name = name, user = request.user,
type = type, account = account)
c.save()
s = "OK"
return HttpResponse(s)
Si vous pouvez poster une démo reproduisant le problème qui serait une aide; Je suggérerais [JS Fiddle] (http://jsfiddle.net/) ou [JS Bin] (http://jsbin.com/). –