Я хочу получить доступ к объекту 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}}]
исправьте меня пожалуйста..
Вы можете получить доступ к объекту 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;
...
}
console.log(response.events);
отпечатки внутри success
[{"model":.....}]
??
response.events
- это массив JS с объектами JS внутри. Что именно вы хотите получить доступ?