Есть много вопросов о передаче массива через Ajax, но у меня никто не работал.
Я публикую только измененные данные формы в массиве из Ajax в представление Django, и я могу получить данные, но я не могу использовать какой-либо цикл для получения первого индекса массива, потому что я вижу формат данных, отличающийся в представлении Django .
views.py
@csrf_exempt
def formdata(request):
template_name = 'base_index.html'
if request.method == 'GET':
form = userForm()
posts = User.objects.all()
args = {'form': form, 'posts': posts }
return render(request, template_name, args)
if request.is_ajax():
data = request.POST
print(data.dict()) # result of array is in last part.
for i in data:
print(i[0]) # this printing first letter of array name.But i was expecting value of first index.
else:
message = " "
return HttpResponse(message)
ЯШ:
var getformdata = []
//calling this function when texbox data changed.
function change_send(lblname,columnname,id,oldvalue,newvalue){
//some code
//...
getformdata.push({id:id,
fieldname:columnname,
fieldvalue:newvalue
})
console.log(getformdata)
}
$(document).ready(function() {
$("#userdata").submit(function(event){
$.ajax({
type:"POST",
url:"/main/",
data: {
'getformdata':getformdata
},
success: function(data){
//return success msg
}
});
return false;
});
});
</script>
Я вижу результат массива javascript в консоли:
0: {id: 2, fieldname: "user_name", fieldvalue: "qa"}
1: {id: 3, fieldname: "user_name", fieldvalue: "qdf23"}
Но после передачи данных в Django я вижу данные, как показано ниже:
{'getformdata[0][id]': '2', 'getformdata[0][fieldname]': 'user_name',
'getformdata[0][fieldvalue]': 'qa',
'getformdata[1][id]': '3', 'getformdata[1][fieldname]': 'user_name',
'getformdata[1][fieldvalue]': 'qdf23'
}
Но этот формат не позволяет мне получить значение первого индекса (2 и 3 идентификатора).