Показать сообщение отдельно
  #1 (permalink)  
Старый 28.12.2013, 06:25
Новичок на форуме
Отправить личное сообщение для Kapitan79 Посмотреть профиль Найти все сообщения от Kapitan79
 
Регистрация: 05.11.2013
Сообщений: 7

Проблема с асинхронной передачей данных через POST
Всем привет!

2 дня никак не могу найти истину, оч нужна помосчь.

Проблема следующая.

Имеется форма содержащая в числе прочего элемент

<select id="area" size="1" name="area"   multiple onClick='sel("area")'>


Задача - выбрать в данном селекте несколько пунктов и отправить из на сервер методом POST.

Я решил попробовать сделать это через ajax.

function sel(idSel)
		{
			alert (idSel)
			var obj = document.getElementById(idSel);
			/*var arrIndexes = new Object;*/
			var j=0;
			for (var i=0; i < obj.options.length; i++)
			  	{
					if (obj.options[i].selected) 
					{
						j++;	 
						var request = getXmlHttpRequest();
						request.onreadystatechange = function ()
						{
							if (request.readyState == 4) 
							{
							  if (request.status == 200)
							  {
								  var result = document.getElementById("MyId"); 
								  result.firstChild.nodeValue = request.responseText; 
							  } else document.write("Произошла ошибка. Обнови страничку");
							}
						}
						var url = "project/additem.inc";//изменим адрес серверного  обработчика
						data = '"'+idSel+j+'='+i+'"'
						alert (data)
						request.open("POST", url, true); // указываем метод post
						
						//посылаем два заголовка: тип данных и размер данных 
						request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
						request.setRequestHeader("Content-Length", data.length);
						request.send(data);// посыл данных, вместо null вставляем переменную с параметрами
					} 
			}
			alert ('Отправлено ')
		}
		
		// функция создания объекта XMLHttpRequest для передачи массива выбранных пунктов меню в $_POST через ajax
		
		function getXmlHttpRequest()
		{
			if (window.XMLHttpRequest) 
			{
				try 
				{
					return new XMLHttpRequest();
				} 
				catch (e){}
			} 
			else if (window.ActiveXObject) 
			{
				try 
				{
					return new ActiveXObject('Msxml2.XMLHTTP');
				} catch (e){}
				try 
				{
					return new ActiveXObject('Microsoft.XMLHTTP');
				} 
				catch (e){}
			}
			return null;
		}
     </script>


Проблема в том, что со стороны PHP скрипта переменная $_POST['area1'] пуста.
Есть ощущение что я что то недопонимаю в теории.
Помогите разобраться.
Ответить с цитированием