Добавление нескольких значений к одному и тому же (уникальному или существующему) ключу объекта JS и использование AJAX для отправки этого объекта в Django (на стороне сервера) - PullRequest
0 голосов
/ 28 сентября 2018

Так что я знаю, что кажется, что часть этого ответа повсюду, но мне потребовалось целое время, чтобы добраться до того места, где я сейчас, и это составило около 50 различных SO-ответов, поэтому, пожалуйста, потерпите меня.

В основном, в течение последних 2 дней я пытался выяснить, как передать словарь JS со стороны клиента в мой Django views.py, чтобы я мог получить доступ к ключам и связанным значениям, в конечном итоге используяони запрашивают мою базу данных для визуализации представления, используя теги шаблонов Django.

Я наконец получил его, где я могу успешно добавить несколько значений к объекту cart_dict на стороне клиента.Однако, когда я пытаюсь отправить запрос AJAX в Django и распечатать результаты, после ключей добавляются дополнительные квадратные скобки, и я не уверен, почему.Что еще более важно, я не знаю, как это исправить, и могу только думать, что мой единственный вариант - написать скрипт для их удаления.Я надеюсь, что смогу избежать этого, и есть кое-что, чего я просто упускаю.

У меня есть ощущение, что это может быть связано со мной, когда я создаю экземпляр нового массива, чтобы добавить все повторяющиеся значения для ассоциированногоключ, но я устранял неполадки и печатал несколько раз без него, и в тот или иной момент возникла та же проблема.Я в конце своего остроумия.Любая помощь будет спасателем.Ниже приведен мой код и некоторые фотографии, на которых я печатаю объект после запуска события click cart-link .Заранее спасибо.

на стороне сервера: печать из представлений django

server-side

на стороне клиента: console.log в консоли браузера

enter image description here

views.py

def cart(request):
    if request.is_ajax():
    myDict = request.POST.dict()
    print(request.POST)
    print(myDict)
    for x,y in myDict.items():
        print(x,y)
    print('this is an AJAX request')

base.html

var cart_dict = {};
var item_id;
var inventory_id;

$(".weight_select_button").click(function() {
            item_id = $(this).parent().attr('id');
            // var fired_button = $(this).val();
            inventory_id = $(this).attr('id');
            console.log(item_id + " " + inventory_id);
            console.log(item_id)
        });

$(".add_to_cart").click(function() {
     var cart_button_item_id = $(this).val();
     if(item_id == cart_button_item_id){
          if(!cart_dict[item_id]){
              cart_dict[item_id] = new Array();
              cart_dict[item_id].push(parseInt(inventory_id, 10))
          } else {
              cart_dict[item_id].push(parseInt(inventory_id,10))
          }
     }
     else {
         alert("Please select a valid weight when adding to cart.")
     }
     item_id = null;
 });

$('#cart_link').click(function(){
    $.ajax({
        url: '/cart/',
        method: 'post',
        dataType: 'json',
        data: cart_dict,
        success: console.log('test')
    });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...