Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2013, 15:24
Новичок на форуме
Отправить личное сообщение для nadda Посмотреть профиль Найти все сообщения от nadda
 
Регистрация: 26.06.2013
Сообщений: 9

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

Подскажите, где ошибка?
Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2013, 00:32
Новичок на форуме
Отправить личное сообщение для nadda Посмотреть профиль Найти все сообщения от nadda
 
Регистрация: 26.06.2013
Сообщений: 9

Спасибо большое, помогло.
Хотя я думал что при объявлении переменной, если значение не указано явно, ей автоматом присваивается NULL.
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2013, 06:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Если значение не определено, то оно неопределенное (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']);
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2013, 11:09
Новичок на форуме
Отправить личное сообщение для nadda Посмотреть профиль Найти все сообщения от nadda
 
Регистрация: 26.06.2013
Сообщений: 9

Спасибо за Ваш вариант. Я не очень дружу с JS, поэтому возможно скрипты получаются длиннее. Насколько я понял, Вы создали пустой массив в строке 2 - var params = [] , затем методом push напихали туда данных (6 строка). И в 11 строке, при отправке, Вы методом join присоединили к каждой паре key - value амперсанд.

Получилось короче. Еще раз спасибо большое. Учту в будущих скриптах.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить пробелы в число после рандома RuSS_lan Общие вопросы Javascript 3 05.01.2013 18:05
определить число целое или нет dadli Общие вопросы Javascript 29 14.06.2012 22:59
Как найти наибольшее число и ввести его на экран? Ivan152 Оффтопик 2 20.05.2012 20:13
Разбить число на миссив, как ? Bogdan808 Общие вопросы Javascript 20 01.09.2010 18:19
Как прибавлять число к числу? Forgott Общие вопросы Javascript 9 06.05.2008 08:47