user860511
user860511

Reputation:

jQuery Splitting of 2 values

I am trying to split the values of an array i'm generating through an autosuggest.

The output of the values are as such:

[
 {"value":"12","name":"Solid Fuel Fire Installers"},
 {"value":"11","name":"Oil Engineers & Boiler Fitters"}
]

I want to extract the values 12 & 11 and store as a variable so I can save these to a database through php. This is what I have tried so far and to no success:

<script type="text/javascript"> 
 var arr = $(".as-values").val().split(","); 
  var category_1=arr[0];
  var category_2=arr[1];
  var category_3=arr[2];
</script> 

I only have 3 categories as I have set a limit on the amount they can add (3).

Many thanks in advance.

Upvotes: 0

Views: 275

Answers (6)

ShankarSangoli
ShankarSangoli

Reputation: 69905

Since you already have an array of a valid json you dont need to parse it. Just try this.

var arr = [
 {"value":"12","name":"Solid Fuel Fire Installers"},
 {"value":"11","name":"Oil Engineers & Boiler Fitters"}
]
var category_1=arr[0].name;
var category_2=arr[1].name;

Upvotes: 0

Ry-
Ry-

Reputation: 224906

Is your question how to access an element by value of its property? You could do this:

var elements = [
    {"value":"12","name":"Solid Fuel Fire Installers"},
    {"value":"11","name":"Oil Engineers & Boiler Fitters"}
]; // Retrieve however you want
var element;

for(var i = 0; element = elements[i]; i++) {
    if(element.value == 11) {
        // It's number 11, for example
    }
}

Of course you should probably put that in a function:

function findByProperty(elements, property, value) {
    var i, element;

    for(i = 0; element = elements[i]; i++) {
        if(element[property] === value) return element;
    }

    return null;
}

// ... define 'elements' as before

var numberEleven = findByProperty(elements, 'value', "11");

Upvotes: 0

sg3s
sg3s

Reputation: 9567

The string you're trying to use is valid json so you should be able to just decode the string with native functions in js that would be JSON.parse(json_string, reviver) in php you would use json_decode($json).

Decoding the string will give you an object/array you should be able to work with easily.

(This is what you want right?)

Upvotes: 0

Joseph Silber
Joseph Silber

Reputation: 219930

Not sure what you're trying to do. Does this sound like it?

var values = '[{"value":"12","name":"Solid Fuel Fire Installers"},{"value":"11","name":"Oil Engineers & Boiler Fitters"}]';

values = $.parseJSON(values);

var submitValues = {};

$.each( values, callback(i, element){
    submitValues[element.value] = element.name;
});

Upvotes: 0

RoccoC5
RoccoC5

Reputation: 4213

The array is an array of objects, not strings, so why not treat them as such?

<script type="text/javascript"> 
    var arr = $(".as-values").val(); 
    var category_1=arr[0].value;
    var category_2=arr[1].value;
    var category_3=arr[2].value;
</script>

Upvotes: 0

Marc B
Marc B

Reputation: 360602

That looks like json. Why not just access it as a native JS structure?

var json = $(".as-values").val();
data = jquery.parseJSON(json)
alert(data[0].name); // solid fuel fire installers

Upvotes: 3

Related Questions