Невозможно отправить данные нескольких запросов на вызов ajax в django - PullRequest
0 голосов
/ 22 октября 2018

И я хочу передать два результата запроса данных с именами mydata и yourdata, проблема в том, что когда я отправляю только mydata или yourdata, тогда он работает нормально, но когда я посылаю в контекстную переменную, он не работает навсе, я новичок в django, поэтому любая помощь будет признательна, спасибо.

@csrf_exempt
def snippetrequests(request):
    import json
    mydata=changerequest.objects.filter(owner_id=request.user.id)
    yourdata=changerequest.objects.filter(user_id=request.user.id)
    mydata=serializers.serialize('json',mydata)
    yourdata=serializers.serialize('json',yourdata)
    if request.method == 'GET':
       context = {
          'mydata':mydata ,
          'yourdata':yourdata
               }
    return HttpResponse(context, content_type="application/json" ) 

И я получаю данные из нее, используя AJAX, как это

$.ajax({
    url: '/snippetrequests/',
    type: 'GET',
    data={},
    success: function(data) {
        // alert(data);
         alert(data)
        console.log(data)
        var div1 = document.getElementById('snippet');   
    },
    failure: function(data) { 
        alert('Got an error dude');
    }
});  

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вы сериализовали данные модели, но не ваш прямой ответ;это все еще в формате словаря.Таким образом, HTTPResponse, скорее всего, просто возвращает строку, которая выглядит как JSON вместо фактического JSON.

Используйте json.dumps как часть вашего оператора return.

return HttpResponse(json.dumps(context), content_type="application/json")

Или еще лучше, если вы используете Django 1.7+, используйте объект JsonResponse:

from django.http import JsonResponse

. . .

return JsonResponse(context)
0 голосов
/ 22 октября 2018

Вы можете вернуть контекст с помощью json.dumps (), например

return HttpResponse(json.dumps(context), content_type="application/json" )

json.dumps в основном преобразует ваш контекстный словарь в строку.

Если вы видите HttpResponseКод класса, он в основном принимает строку в качестве содержимого, content = b '' принимается в качестве аргумента по умолчанию, где b означает байты, затем ваш контент преобразуется в строку байтов и соединяется с b '' и устанавливается.

Следовательновам нужно использовать json.dumps (content).

ИЛИ вы можете попробовать JsonResponse, расширяющий класс HttpResponse, с заголовком Content-Type по умолчанию в качестве application / json

from django.http import JsonResponse

return JsonResponse(context)
...