PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Thursday, June 30, 2022

[FIXED] how to use dynamic variable in update.js shopify

 June 30, 2022     api, arrays, javascript, json, shopify     No comments   

Issue

I want yo use test variable in update.js but it shows error when I use as variable but when I pass this value directly it works can someone please tell me how can use dynamic variable to change quantity of existing products in cart

I have updated my code It will allow user to add only 5 items more than 5 items will be removed It will create string which will look like this 32082238341235:0,39470423048307:0,32164693278835:0,32164693835891:1

and finally the all IDs and qunatity will be updated by update.js

I have got error in last step its shows {"status":404,"message":"Cart Error","description":"Cannot find variant"}

when i try to update all products

jQuery.getJSON('/cart.js', function(cart) {
  var items_new = cart.items;
  var count = 0;
  count = cart.item_count;
  var item_to_remove = count - 5;

  if (count > 5) {
    var item_to_remove = count - 5;
    var combine = ""
    if (item_to_remove > 0) {
      for (var i = 0; i < items_new.length; i++) {
        if (count > 5) {
          var c_id = items_new[i].variant_id;
          var c_quantity = items_new[i].quantity;

          if (c_quantity >= item_to_remove) {


            var q = c_quantity - item_to_remove
            var data_multiple = c_id + ":" + q + ",";


            debugger;



            count = count - item_to_remove;
            console.log(data_multiple);
            var combine = combine + data_multiple;

          } else {

            var data_single = c_id + ":" + 0 + ",";

            count = count - c_quantity;
            item_to_remove = item_to_remove - c_quantity
            console.log(data_single)

            var combine = combine + data_single;
          }

        }

      }


      console.log(combine.slice(0, -1));
      var test = combine.slice(0, -1);

      console.log({
        updates: {
          test
        }
      });
      jQuery.post('/cart/update.js', {
        updates: {
          test
        }
      });





    }
    t._rerenderCart()

  }
  t.sidebarDrawer.open()
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


Solution

You need to store test as an object within parentheses {} and then pass to updates by using the spread ... operator.

var test = {39470423048307 : 0, 32164693278835 : 0, 32164693835891 : 1};
console.log({updates: {...test}});
jQuery.post('/cart/update.js', {updates:{...test}});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

In your updated code, you are passing a string to updates rather than an object. You should create an object from the data inside the for loop and pass that object to updates. See lines with // CHANGE HERE:

...
var combine = {};
if (item_to_remove > 0) {
  for (var i = 0; i < items_new.length; i++) {
    if (count > 5) {
      var c_id = items_new[i].variant_id;
      var c_quantity = items_new[i].quantity;

      if (c_quantity >= item_to_remove) {


        var q = c_quantity - item_to_remove;
        
        // CHANGE HERE
        combine[c_id] = q;
        
        count = count - item_to_remove;

      } else {
        // CHANGE HERE
        combine[c_id] = 0;

        count = count - c_quantity;
        item_to_remove = item_to_remove - c_quantity;
      }
      console.log(combine);
    }

  }

  // CHANGE HERE
  var test = combine;

  console.log({
    updates: test
  });
  jQuery.post('/cart/update.js', {
    updates: test
  });
...


Answered By - kiner_shah
Answer Checked By - Cary Denson (PHPFixing Admin)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing