неопределенное число параметров
Добрый день.
Написал вот такую функцию. Первым параметром передается страница-обработчик, последующими - инпуты, откуда вытаскивать значения. 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, время: 21:08. |