Saya ingin mencetak daftar semua pilihan saya yang diperiksa di fungsi tampilan Django saya, tetapi ketika saya mengirim data yang dipilih ajax, saya mendapatkan kesalahan berikut di konsol saya:

Traceback (most recent call last):
  File "C:\Users\lislis\DJANGO~2\DJANGO~1.2\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
    response = get_response(request)
  File "C:\Users\lislis\DJANGO~2\DJANGO~1.2\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\lislis\DJANGO~2\DJANGO~1.2\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\lislis\Django-VEnvs-Projects\django 1.11.2\src\rapport_sante\papa\views.py", line 78, in stat_ajax
    for d in tb_ids:
TypeError: 'NoneType' object is not iterable
[12/Aug/2017 11:53:07] "POST /sante/stat-ajax/ HTTP/1.1" 500 19573

Ini adalah bagian dari permintaan posting ajax saya:

  var data =[];
            $(":checkbox:checked").each(function() {
                data.push($(this).val());
            });

        if(data.length==0)
        {
            alert("Veuillez cocher au moins une dps");
            alert(data.length);
        }
        else
        {

              $.ajax({
        url: "{% url 'papa:stat-ajax' %}",
        type:"post",
        data: {dpsID:data,csrfmiddlewaretoken: '{{ csrf_token }}'},
        success:function(data) 
        {
            //Some code
        }
      });

Inilah fungsi tampilan saya, di mana saya ingin menampilkan semua data yang terkandung dalam dpsID permintaan ajax POST saya:

def stat_ajax(request):
    tb_ids=request.POST.get('dpsID')
    for d in tb_ids:
        print(d)
0
user8121151 12 Agustus 2017, 14:08

2 jawaban

Jawaban Terbaik

Inilah yang harus Anda lakukan: 1) Pertama, sebelum mengirim permintaan ajax Anda, harus mengubah array data Anda menjadi string:

 $.ajax({
        url: "{% url 'papa:stat-ajax' %}",
        type:"post",
        data: {dpsID:data.toString(),csrfmiddlewaretoken: '{{ csrf_token }}'},

2) Dalam fungsi tampilan Anda, Anda harus menghapus koma, dari varibal POST['dpsID'] karena ketika Anda memanggil metode toString(), koma masih ada, atau Anda tidak ingin mengekstrak id yang nilainya sebagai koma .Jadi Anda bisa melakukan ini:

def stat_ajax(request):
    #We create a list which will contain our value without a comma
    tb=[]

    #Here you remove commas from you POST['dpsID'] variable
    for i in request.POST['dpsID']:
        #if a comma is found,we dont do anything
        if i==",":
            pass

        #But if it's a number,we append it in our list
        else:
            tb.append(i)
    for d in tb:
        print(d)

See!!

0
Christian Lisangola 12 Agustus 2017, 12:59

Anda mencoba mengakses data sebagai data yang disandikan Formulir, yang Anda lewati dengan JSON di badan

def stat_ajax(request):
    import json
    data = json.loads(request.body)
    tb_ids = data['dpsID']
    for d in tb_ids:
        print(d)
0
Tarun Lalwani 12 Agustus 2017, 12:29