2013-04-04 3 views
0

У меня есть поиск jquery docs и SO, но я не могу найти то, что мне нужно.jquery ajax с массивом элементов html

У меня есть пролеты, созданные в PHP, таким образом они следуют образцу:

<span class="om" id="o_1"></span> 
<span class="om" id="o_3"></span> 
... 

Я хочу, чтобы собрать все цифры в атрибуте ид и отправить их в виде массива данных (JSON, если потребности быть) в сервер с помощью AJAX и возвращает результат функции:

$.get("/pages/gOboxMeters", function($("span.om") <-- extract id's here) {alert(data);}) 

Я просто alert ИНГ его сейчас.

Каков правильный код?

Благодаря

ответ

1

Вы можете использовать map,

Live Demo

numbers = $('.om').map(function(){ 
    return this.id.replace('o_', ''); 
}).get().join(','); 

jQuery.get("/pages/gOboxMeters", "yourVariable: " + numbers, 
    function(){alert(""sent); 
}); 

Вы можете использовать другие разделительный символ в присоединиться

+0

Я бы сделал '.replace (/ [^ 0-9]/g, '')' за дополнительную надежность, но +1. Кроме того, ключевое слово 'var', чтобы избежать глобального. – karim79

+0

@ karim79 так ли функция get делает ajax? (я помещаю там url?) или просто передаю «числа» в качестве данных? Отличный краткий ответ BTW – khany

1

Вы также можете создать array и push в значение в массиве с each функцией jQuery

See Demo

var num = new Array; 

$(".om").each(function(){ 
     num.push($(this).attr("id").replace("o_","")); 
     $("#result").append($(this).attr("id").replace("o_","")+"<br>"); // just to show result visually 
}); 
0

Вы можете собрать и отправить значение как этот

$(document).ready(function(){ 
var value = [] 

$('span.om').each(function(){  
value.push($(this).attr('id'))}); 
alert(value); 
    $.get("/pages/gOboxMeters",{value : value }, function(){}); 

}); 

Пример: http://jsfiddle.net/X5r8r/1120/

0

Вы можете использовать функцию .each() JQuery:

var arr = []; 
    $('span.om').each(function(index, item){arr.push($(item).attr('id').substring(2));}) 

В консоли той же странице, я попробовал следующее, и она работает правильно:

var arr = [] 
$('.mainnavs a').each(function(index, item){arr.push($(item).attr('id').substring(4));}) 

После этого, используйте переменную обр для дальнейшей обработки ,