zjm1126
zjm1126

Reputation: 66777

How do I write a Django view that can be called by jQuery's $.getJSON()?

The javascript:

$.getJSON('/jsonView', {
    tag: "userName",
    userName: 'zjm1126'
}, function (H) {
    if (H.result == "successName") {
        F.showOk(h.ok);
    } else {
        if (H.result == "existName") {
            F.showErr(h.userNameExist);
        }
    }
});

The view:

def jsonView(request):
    # What would go here?

def json_view(request):
  import json
  username=request.GET.get('username')
  result='successName'
  if username:
    try:
      user=User.objects.get(username=username)
      result='existName'
    except User.DoesNotExist:
      pass
    return HttpResponse(json.dumps({'result': result}))

it makes 500 INTERNAL SERVER ERROR.

why???

Upvotes: 0

Views: 745

Answers (3)

czarchaic
czarchaic

Reputation: 6328

This is relatively straightforward

def json_view(request):
  username=request.GET.get('username')
  result='successName'
  if username:
    try:
      user=User.objects.get(username=username)
      result='existName'
    except User.DoesNotExist:
      pass
    return HttpResponse(simplejson.dumps({'result': result}))

Upvotes: 1

ozan
ozan

Reputation: 9331

It's pretty simple:

  1. Retrieve GET data from request.GET
  2. Do stuff
  3. Return a response with mimetype application/javascript

1 and 2 are like any other view. If you don't know how to do 3, check out django.http.HttpResponse.__init__

Upvotes: 0

Dominic Rodger
Dominic Rodger

Reputation: 99821

I suggest you work your way through James Bennett's tutorial on using AJAX with Django - he includes details on writing views that return JSON.

Upvotes: 2

Related Questions