как получить доступ к объекту Django в AJAX

-1

Я хочу получить доступ к объекту django в коде ajax. Но я не могу получить к нему доступ. пожалуйста, направляйте меня.

мой код сервера

def attendance_table(request):
    if request.is_ajax():
        try:
            CollegeCode = request.session.get('collegeCode')
            academicyear = logic.academicYearCal()
            eventquery = "SELECT e.EventId , e.EventLocation,e. EventStartDate,e.EventEndDate,e.EventHours,em.EventCode as EC ,em.EventName from Events "
            events = models.Events.objects.raw(eventquery, [academicyear, '1', CollegeCode])

            context = {}
            events = serializers.serialize('json', events)
            context['events'] = events

            return JsonResponse(data=context)

        except Exception as e:
            return JsonResponse(data={'error':'error'})


Код Ajax

$.ajax({
        url:url,
        type:'GET',
        dataType:'JSON',
        success:function(response) {
            console.log(response.events);
        }
    });


в консоли браузера вывод

[{"model": "sample.events", "pk": "E22", "fields": {"eventcode": "1", "collegecode": "KIT", "eventopenflag": "1", "eventstartdate": "2017-07-23", "eventenddate": "2017-07-22", "eventlocation": "Shivaji memorials , kolhapur", "academicyear": "2017", "eventlevel": 5, "eventhours": 0}}]

исправьте меня пожалуйста..

  • 0
    response.events - это массив JS с объектами JS внутри. Что именно вы хотите получить доступ?
  • 0
    все в «полях»: {«код события»: «1», «код колледжа»: «KIT», «eventopenflag»: «1», «eventstartdate»: «2017-07-23», «eventenddate»: «2017- 07-22 "," eventlocation ":" Мемориалы Шиваджи, Колхапур "," academicyear ":" 2017 "," levellevel ": 5," eventhours ": 0}
Теги:

1 ответ

0
Лучший ответ

Вы можете получить доступ к объекту javascript аналогично словарю python.

Поскольку вы возвращаете массив, вы должны, во-первых, перебрать его. Предполагая, что вы назвали свой возвращаемый массив в качестве response.events, тогда:

success:function(response) {
    // convert String to JSON object (JS object)
    var events = JSON.parse(response.events);  // events should be an Array (console.log(events instanceof Array) should yield True)
    for (var i=0; i<events.length; i++) { 
        // now each events[i] has an object within it
        var obj = events[i];  // obj is an alias for each object in the array
        // Now you can access each key-value pair like this
        var fields = obj.fields;  // an alias again
        var eventcode = fields.eventcode;  // or fields['eventcode']
        var collegecode = fields.collegecode;
        // etc.
    }

Обратите внимание: если ваш массив всегда будет включать один объект, вам не нужен цикл for. Просто введите объект внутри него следующим образом:

success:function(response) {
    var events = JSON.parse(response.events);
    var obj = events[0];
    var fields = obj.fields;
    ...
}
  • 0
    var obj = response.events [i]; с этим я получил только [ в качестве вывода, а все остальное не определено. почему так ? это не сериализовано должным образом?
  • 0
    Есть ли console.log(response.events); отпечатки внутри success [{"model":.....}] ??
Показать ещё 6 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню