Как использовать JQuery и Django (ajax + HttpResponse)? - PullRequest
4 голосов
/ 06 октября 2009

Предположим, у меня есть функция AJAX:

function callpage{
$.ajax({
    method:"get",
    url:"/abc/",
    data:"x="+3
    beforeSend:function() {},
    success:function(html){
       IF HTTPRESPONSE = "1" , ALERT SUCCESS!
    }
    });
    return false;
}
}

Когда мой «Вид» выполняется в Django, я хочу вернуть HttpResponse('1') или '0'.

Как я могу узнать, был ли он успешным, и затем сделать это предупреждение?

Ответы [ 2 ]

16 голосов
/ 06 октября 2009

Типичный рабочий процесс заключается в том, чтобы сервер возвращал объект JSON в виде текста, а затем интерпретирует этот объект в javascript . В вашем случае вы можете вернуть текст {"httpresponse": 1} с сервера или использовать библиотеку Python json, чтобы сгенерировать его для вас.

У JQuery есть хороший json-ридер (я просто читаю документы, поэтому в моих примерах могут быть ошибки)

Javascript:

$.getJSON("/abc/?x="+3,
    function(data){
      if (data["HTTPRESPONSE"] == 1)
      {
          alert("success")
      }
    });

Джанго

#you might need to easy_install this
import json 

def your_view(request):
    # You can dump a lot of structured data into a json object, such as 
    # lists and touples
    json_data = json.dumps({"HTTPRESPONSE":1})
    # json data is just a JSON string now. 
    return HttpResponse(json_data, mimetype="application/json")

Альтернативный взгляд, предложенный Исси (мило, потому что он следует принципу СУХОЙ)

def updates_after_t(request, id): 
    response = HttpResponse() 
    response['Content-Type'] = "text/javascript" 
    response.write(serializers.serialize("json", 
                   TSearch.objects.filter(pk__gt=id))) 
    return response           
2 голосов
/ 22 октября 2009

Вместо того, чтобы делать всю эту грязную работу с низкоуровневым Ajax и JSON, рассмотрите возможность использования плагина taconite для jQuery. Вы просто делаете вызов бэкэнду, а он делает все остальное. Это хорошо документировано и легко отлаживается, особенно если вы используете Firebug с FF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...