Я пытаюсь реализовать взаимодействие клиент/сервер с помощью Django и Ajax, и у меня возникла проблема с запросом Ajax.Django/Ajax получить запрос
Вот мое мнение:
from django.http import HttpResponse
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from taskmanager.models import Task
from taskmanager.serializers import TaskSerializer
class JSONResponse(HttpResponse):
def __init__(self, data, **kwargs):
content = JSONRenderer().render(data)
kwargs['content_type'] = 'application/json'
super(JSONResponse, self).__init__(content, **kwargs)
def task_list(request):
if request.method == 'GET':
tasks = Task.objects.all()
serializer = TaskSerializer(tasks, many=True)
return JSONResponse(serializer.data)
И мой JQuery код:
$(document).ready(function(){
$("button").click(function(){
$.ajax({
type: "get",
url: "http://127.0.0.1:8000/",
dataType: "json",
success: function(data){
alert(data[0]["title"]);
},
error: function(){
alert("error");
}
});
});
});
Каждый раз, когда сервер возвращает статус 200 OK, но функция ошибок выполняется. Когда я посещаю этот url непосредственно в браузере, я получаю действительный выход json. Более того, если я помещаю этот вывод в файл и ссылаюсь на него в URL-адресе ajax, он работает так, как предполагалось.
P.S. Извините за мой английский.
UPDATE: Кроме того, когда я просматриваю детали ответа в FireBug, у него нет тела ответа.
заголовки отклика:
Server:WSGIServer/0.1 Python/2.7.3
Date:Fri, 10 May 2013 07:56:23 GMT
Content-Type:application/json
UPDATE: изменил AJAX URL для: "http://127.0.0.1:8000/?callback=?"
и теперь я получаю тело ответа: [{"id": "518a92147c2fce152b081878", "title": "New task"}, {"id": "518a905e7c2fce1516b8f9dc", "title": "Save the galaxy"}, {"id": "518a904e7c2fce1516b8f9da", "title": "Do a barrel roll"}]
, состояние - 200 и ошибок - parsererror.
Вы должны использовать относительный URL-адрес, а не полный путь. Что-то вроде 'url:" customer/send-email/",'. –