2010-12-03 9 views
0

Die Datenvariable gibt nichts zurück, wenn sie "OK" oder "EXISTS" zurückgeben soll.Ajax erhält leere Daten zurück

Ich habe eine Vorlage mit einem Overlay-Effekt. Die einkommen.html Vorlage hat ein Formular und eine Schaltfläche "Eine neue Kategorie hinzufügen", wenn Sie darauf klicken, wird ein neues Fenster (Überlagerungseffekt) mit einem winzigen Formular angezeigt.

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, type): 
    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(name=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) 
+0

konsistente Problem in allen Browsern? –

+0

Können Sie Ihren serverseitigen Code debuggen? Wird es ausgeführt? – Samo

+0

Ja, der ganze Django-Code wird ausgeführt. – mxm

Antwort

0

kreuzen Sie Domains? Sie können keine domainübergreifenden Ajax-Anforderungen ausführen. Dazu gehören Subdomains.

+0

Ich glaube nicht. – mxm