неопределенное число параметров
Добрый день.
Написал вот такую функцию. Первым параметром передается страница-обработчик, последующими - инпуты, откуда вытаскивать значения.
function requestItem() {
var post_str;
var key_str;
var val_str;
for(var i=1;i<arguments.length;i++) {
key_str=arguments[i];
val_str = document.getElementById(arguments[i]).value;
post_str +=key_str+'='+val_str+'&';
}
http.open("POST",arguments[0], true);
http.onreadystatechange=echoPost;
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send(post_str);
}
<input type="text" id="item_id" name="id">
<input type="text" id="item_amnt" name="amnt">
<input type="submit" value="OK" onclick="requestItem('handler','item_id','item_amnt');">
И почти работает.... во только выдает undefined и лепит к нему первый id массива. Это вывод $_POST: print_r ($_POST); Array ( [0] => Array ( [undefineditem_id] => item [item_amnt] => 12 ) ) Подскажите, где ошибка? Спасибо |
Спасибо большое, помогло.
Хотя я думал что при объявлении переменной, если значение не указано явно, ей автоматом присваивается NULL. |
Если значение не определено, то оно неопределенное (undefined по-английски)
Кстати, ты вкурсе про существование массивов в javascript?
function requestItem(url, fields) {
var params = [];
for (var i = 0; i < fields.length; i++) {
var key = fields[i];
var value = document.getElementById(key).value;
params.push(key + '=' + value);
}
http.open("POST", url, true);
http.onreadystatechange = echoPost;
http.setRequestHeader("Content-type","application/x-www-form-urlencoded");
http.send(params.join('&'));
}
requestItem('/request/item/', ['item_id', 'item_amt']);
|
Спасибо за Ваш вариант. Я не очень дружу с JS, поэтому возможно скрипты получаются длиннее. Насколько я понял, Вы создали пустой массив в строке 2 - var params = [] , затем методом push напихали туда данных (6 строка). И в 11 строке, при отправке, Вы методом join присоединили к каждой паре key - value амперсанд.
Получилось короче. Еще раз спасибо большое. Учту в будущих скриптах. |
| Часовой пояс GMT +3, время: 01:13. |