2013-11-20 3 views
2

Проблема:Удалить запятая из JQuery массива

У меня есть массив в JS, который выглядит следующим образом:

["intelligence", "skin", "weight", "volume"] 

Это хранится в вар под названием «newListASource». Я применяю этот var к форме, а затем отправляю ее с помощью POST.

// Form destination 
var formUrl  = 'explorer.php', 

// Generate the form 
$form = $("<form action='"+ formUrl +"' method='post'></form>") 
     .append("<input type='hidden' name='Perspective' value='" + newListASource + "'>") 
     .append("<input type='hidden' name='form_submitted' value='true'>") 
     .appendTo('body'); 

// Submit the form 
$form.submit(); 

Когда я подбираю его через PHP и распечатываю его, он дает мне строку с запятыми. Например:

skin,weight,intelligence,volume 

Желаемая выход Я хотел бы это (с обрезанными пробелы в начале и в конце):

skin weight intelligence volume 
+0

Вопрос: Что вы имели в виду под «забрать его через php»? – reporter

+0

@reporter Форма отправляется с использованием POST на страницу PHP. На этой странице PHP я повторяю переменную POST Perspective и получаю значения в виде: skin, weight, intelligence, volume – kexxcream

+0

Я вижу. Спасибо за Ваш ответ. – reporter

ответ

4

Поскольку вы используете массив использовать Array.join() с разделителем, как ' '

"<input type='hidden' name='Perspective' value='" + newListASource.join(' ') + "'>" 
5

newListASource.join(' ') даст вам желаемый результат -

// Generate the form 
$form = $("<form action='"+ formUrl +"' method='post'></form>") 
    .append("<input type='hidden' name='Perspective' value='" 
     + newListASource.join(' ') + "'>") 
    .append("<input type='hidden' name='form_submitted' value='true'>") 
    .appendTo('body'); 

// Submit the form 
$form.submit(); 

См. doc.

В настоящее время вы получаете значения, разделенные запятыми, потому что newListASource.toString() вызывается всякий раз, когда вы объединяете свой массив со строкой, и это поведение по умолчанию метода toString для массивов. Однако, когда вы вызываете join, он преобразует ваш массив в строку, разделенную разделителем, которую вы передаете ему в качестве аргумента. Таким образом, вы получаете значения, разделенные пробелами в этом случае.

0
var arr = ["intelligence", "skin", "weight", "volume"]; 


var result = ary.join(','); 
1

Вы можете использовать .join() и $.trim():

// Form destination 
var formUrl  = 'explorer.php', 
    newListASource = newListASource.join(' '); 

затем в форме вы можете изменить это :

$.trim(newListASource) 
0

То, что вы также можете сделать, это просто отправить массив как массив!

var formUrl  = 'explorer.php'; 
var $form = $("<form action='"+ formUrl +"' method='post'></form>") 
    .append("<input type='hidden' name='form_submitted' value='true'>") 
    .appendTo('body'); 
while(newListASource.length) 
    $form.append($("<input type='hidden' name='Perspective[]' value=''>").val(newListASource.shift())); 
$form.submit(); 

Php будет иметь массив внутри $_POST['Perspective']. (Остерегайтесь ввода имени в настоящее время Перспектива [], чтобы указать, что это будет массив.)

Смежные вопросы