отправка массива флажков из js в представления django - PullRequest
0 голосов
/ 29 апреля 2019

Я не совсем понимаю, как это сделать через Ajax или Json, но как я могу отправлять массив выбора (curCheck) по щелчку в представления Django и получать его как массив python

Javascript

document.getElementById('results').addEventListener('click', function(){
    html_table = '<thead><tr><th>Currency</th><th>Amount</th><th>Symbol</th>><tr/><thead/>'
        var checkElements = document.getElementsByClassName('ch');
        for(var i =0; i< curname.length; i++){
            if (checkElements[i].checked) {
            var curChecked = curname[i];
            var JsonArr = JSON.stringify(curChecked);
            postcurChecked(JsonArr)
            html_table += '<tr><td>' + curname[i] + '</td>';
            }
}
document.getElementById('result_table').innerHTML = html_table;
},false;

Аякс

function postsubChecked(curChecked) {
    $.ajax({
        "url": "http://127.0.0.1:8000/results/",
        "type": "POST",
        "data": {"checkbox": curChecked},
        "headers": { 'X-CSRFToken': getCookie('csrftoken')}
    })
}

в Джанго

def currencyChecked(request): 
    body_unicode = request.body.decode('utf-8') 
    body_unicode = body_unicode.replace('%22','') 
    print(body_unicode) json_data = json.loads(body_unicode.read())

Я хотел бы увидеть печать массива python, чтобы увидеть, что он передается обратно

но я продолжаю получать эту ошибку: json_data = json.loads (body_unicode.read ()) AttributeError: у объекта 'str' нет атрибута 'read'

1 Ответ

1 голос
/ 29 апреля 2019

Для получения выбранных значений флажков и отправки в виде массива с помощью ajax вы можете использовать jquery следующим образом:

считайте, что у вас есть несколько флажков и кнопка.

<input type="checkbox" name="imageName">
<input type="checkbox" name="imageName">
.......
<button id="deletePhoto">Delete</button>

после выбора нескольких значений флажка нажмите на эту кнопку. При нажатии на приведенный ниже jquery будет запущен для создания набора выбранных значений флажков.

//jquery for getting the selelcted checkbox values 

  $(document).on("click","#deletePhoto",function(){

    var favorite = [];//define array

    $.each($("input[name='imageName']:checked"), function(){            
        favorite.push($(this).val());
    });

    alert("Photo Selected: " + favorite.join(", "));

    if(favorite.length == 0){
      alert("Select Photo to delete");
      return false;
    }

    //ajax for deleting the multiple selelcted photos
    $.ajax({type: "GET",
    url: "/olx/deletePhotoFromEdit",
    data:{
      favorite:favorite
    },
    success: function(){
     // put more stuff here as per your requirement
    });

   }
    });

});

В представлении вы можете получить массив следующим образом:

selected_photo = request.GET.getlist('favorite[]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...