jQuery Разделение 2 значений - PullRequest
0 голосов
/ 15 августа 2011

Я пытаюсь разделить значения массива, который я генерирую, с помощью автозаполнения.

Вывод значений такой:

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

Я хочу извлечьзначения 12 и 11 и сохранить как переменную, чтобы я мог сохранить их в базе данных через php.Это то, что я пробовал до сих пор, но безуспешно:

<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> 

У меня есть только 3 категории, поскольку я установил ограничение на сумму, которую они могут добавить (3).заранее спасибо.

Ответы [ 6 ]

3 голосов
/ 15 августа 2011

Это похоже на JSON. Почему бы просто не получить к нему доступ как к собственной структуре JS?

var json = $(".as-values").val();
data = jquery.parseJSON(json)
alert(data[0].name); // solid fuel fire installers
0 голосов
/ 15 августа 2011

Поскольку у вас уже есть массив действительных json, вам не нужно его анализировать. Просто попробуйте это.

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;
0 голосов
/ 15 августа 2011

Ваш вопрос, как получить доступ к элементу по значению его свойства?Вы можете сделать это:

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
    }
}

Конечно, вы, вероятно, должны поместить это в функцию:

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");
0 голосов
/ 15 августа 2011

Строка, которую вы пытаетесь использовать, является допустимой json, поэтому вы должны иметь возможность просто декодировать строку с нативными функциями в js, которые были бы JSON.parse (json_string, reviver) в php, вы бы использовали json_decode ($ json) . * +1001 *

Декодирование строки даст вам объект / массив, с которым вы сможете легко работать.

(Это то, что вы хотите, верно?)

0 голосов
/ 15 августа 2011

Не уверен, что ты пытаешься сделать.Это звучит так?

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;
});
0 голосов
/ 15 августа 2011

Массив - это массив объектов, а не строк, так почему бы не рассматривать их как таковые?

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...