2

I am trying to grab a query string parameter and match it to an array that is getting dynamically generated.

Edit for clarity The url will be something like www.example.com?some=stuff&id=dynamicNumber

I'm outputting my array from liquid (shopify) which seems to be rendering properly when I view the source.

My failing point seems to be setting the actual variable "soldOut", because if I put one of the actual values that I know will be in the array, it returns true.

Fiddle with a static array and functional matching: http://jsfiddle.net/zHuDU/5/

I'm just missing the querystring function because I wasn't sure how to do that with JSfiddle

Here is my code:

<script>
  var testArray = [
  // shopify liquid to generate values
{% for variant in product.variants %}
{% if variant.inventory_quantity == 0 %}
{{ variant.id }},
{% else %}
{% endif %}
{% endfor %}
    ];

function GetQueryStringParams(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) 
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) 
        {
            return sParameterName[1];
        }
    }
}

var soldOut = GetQueryStringParams('id');


  if(jQuery.inArray(soldOut, testArray)!==-1)  {
      console.log("The ID was in the test array (out of stock)");
  }
  else{
      console.log("The ID wasn't in the test array (so it's in stock or I messed up)");
  }
</script>
6
  • So it doesn't return false when not in the array? because the fiddle works just fine. Can you show us some examples of GetQueryStringParams('id')?
    – Spokey
    Dec 9, 2013 at 14:26
  • Yes, the fiddle works, but when I try all the code together, it looks like GetQueryStringParams('id') isn't actually pulling the relevant info from the query string. That's what I was trying to say. I got it from here: css-tricks.com/snippets/javascript/get-url-variables
    – Patrick
    Dec 9, 2013 at 14:28
  • yea if i had to guess there is something wrong with the querystring parsing. yours doesn't look bad but i would use a proven lib for this rather than debug it stackoverflow.com/questions/3788125/jquery-querystring
    – jm0
    Dec 9, 2013 at 14:30
  • I've tried a number of them, but I will give your link a shot. I can't help but feel I'm just doing something wrong with my syntax to create the variable.
    – Patrick
    Dec 9, 2013 at 14:31
  • Try console.log(soldOut) and console.log(window === top). Dec 9, 2013 at 14:31

1 Answer 1

3

soldOut is string, but the values in your array are integer. Cast soldOut to an int:

soldOut = +GetQueryStringParams('id');
1
  • Brilliant! I think this did it! I will upvote right after I test it fully!
    – Patrick
    Dec 9, 2013 at 14:42

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.