Próbuję POST utworzyć koszyk sesji PHP, a następnie POBIERZ sesję w koszyku paska bocznego do wyświetlenia. Jestem blisko, alerty działają dobrze, ale nie mogę dowiedzieć się, dlaczego moje dane są pobierane jako cokolwiek innego niż ciąg JSON.

Oto komunikat o błędzie konsoli:

Uncaught TypeError: Nie można użyć operatora „in” do wyszukania „length” w {"orders": {"testfive.net": {"domain_order": {"addnew": {"years": "9"}}}, "testone.biz": {"domain_order": {"addnew": {"years": "1"}}}}}

A oto JQuery:

    $(document).ready(function () {
    //add to cart
    $(".add_domain").on('submit', function(e){
      e.preventDefault();
    var $this = $(this);
    var $domain_name = $this.find('input.domain_name').val();
    var $years = $this.find('select.addnew_period').val();

    var obj = { domain_name: $domain_name, years: $years};
    var myJSON = JSON.stringify(obj);
    alert(myJSON);

    //POST to the cart
    $.post('<?php echo site_url('orders/addtocart'); ?>',
            myJSON,
            function (data, status) {
                alert("Data Results: " + data + "\nStatus: " + status);
            });

    //GET the cart contents
    var $sidebar = '<ul>';
    $.get('<?php echo site_url('orders/getcart'); ?>', function (data) {
        $.each(data, function(element) {
           $sidebar += '<li>' + element.domain_name + '</li>';
          });  
          $sidebar += '</ul>';
        $("div.sidecart").html($sidebar);        
    });
});
});
0
James 5 marzec 2020, 10:46

2 odpowiedzi

Najlepsza odpowiedź

Mam to, przechodząc na $ .getJSON. Oto cała prośba o referencje GET:

//GET the cart contents
$.getJSON('<?php echo site_url('orders/getcart'); ?>', function (data) {
    var items = [];
    $.each(data, function (domain, detail) {
        $.each(detail.domain_order, function (key, val) {
            if(key === 'addnew') {
                //alert("domain: "+domain+" years: "+val.years);
                items.push("<li id='" + domain + "'>" + domain +" for "+val.years + " Year(s)</li>");
            }
        });
    });
    $("<ul/>", {
        "class": "cart-list",
        html: items.join("")
    }).appendTo("div.sidecart");
});
0
James Shaver 6 marzec 2020, 23:22

Spróbuj tego

 //GET the cart contents
        var $sidebar = '<ul>';
        $.get('<?php echo site_url('orders/getcart'); ?>', function (data) {
            $.each(data, function(index, value) { // You just use 2 parameter 
               $sidebar += '<li>' + element.domain_name + '</li>';
              });  
              $sidebar += '</ul>';
            $("div.sidecart").html($sidebar);        
        });
-1
Md Majadul Islam 5 marzec 2020, 07:50