Перейти к содержанию

Вопрос Ajax I/o параметров


Дос

Рекомендуемые сообщения

Здравствуйте коллеги, столкнулся с такой проблемой. Мне необходимо передать постом(POST) текст из fckeditor через java script. Значит так:

 

php форма:

<form id="AddInfo" action="java script:AddHelpInfo();" method="post">	 
	<input type="hidden" value="<?=$menu_id?>" id="menu_id">  
	<input type="hidden" value="<?=$type?>" id="type">  
	<input type="hidden" value="<?=$menu?>" id="menu">
	............................
	............................
	<input type="submit" value="Сохранить"> 
</form>

 

js функция AddHelpInfo передачи текста:

function AddHelpInfo()
{
var menu_id = document.getElementById("menu_id").value;
var type = document.getElementById("type").value;
var menu = document.getElementById("menu").value;
var text = document.getElementById("FCKeditor1").value;
var parametrs = "menu_id=" + menu_id + "&type=" + type + "&menu=" + menu + "&text=" + text;
loadHTTPDocPOST('init.InputHelpInfo.php', parametrs);
}

 

js функция loadHTTPDocPOST использующая XMLHttpRequest

	function loadHTTPDocPOST(file, params)
{

	xmlHttp = null;

	// Блок 1. Для FireFox
	if (window.XMLHttpRequest)
	{
		xmlHttp=new XMLHttpRequest();
		if (xmlHttp!=null)
		{
			xmlHttp.open("POST", "httpr/" + file, true);
			xmlHttp.setRequestHeader('Content-Type', 'text/html; charset=windows-1251');
			xmlHttp.send(params);
			xmlHttp.onreadystatechange=state_Change;
		}
		else
		{
			alert("Ваш обозреватель не поддерживает ajax.");
		}
	}

	// Блок 2. Для IE
	else if (window.ActiveXObject)
	{
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		if (xmlHttp!=null)
		{
			xmlHttp.open("POST", "httpr/" + file, true);
			xmlHttp.setRequestHeader('Content-Type', 'text/html; charset=windows-1251');
			xmlHttp.send(params);
			xmlHttp.onreadystatechange=state_Change;
		}
		else
		{
			alert("Ваш обозреватель не поддерживает ajax.");
		}
	}
}

 

Принимаю эти параметры в файле init.InputHelpInfo.php так:

@$menu_id = $_REQUEST['menu_id'];
@$type	= $_REQUEST['type'];
@$menu	= $_REQUEST['menu']; 
@$value   = $_REQUEST['text'];

 

 

Так вот не могу принять в файле Init.InputHelpInfo.php эти параметры("menu_id=" + menu_id + "&type=" + type + "&menu=" + menu + "&text=080"). В

функцию AddHelpInfo() эти параметры принимаются нормально. Так в чем же загвоздка? Может что-то пропустил? Есть подозрения что большой текст в переменной text нельзя принять таким способом, или же ошибка в функции loadHTTPDocPOST? Подскажите если кто сталкивался.

Ссылка на комментарий
Поделиться на другие сайты

такой вопрос - ты вроде говорил что это локально работает

xmlHttp.open("POST", "httpr/" + file, true);

ты уверен что файл доступен по этому адресу: "httpr/" + file

выведи адрес полный и

в адресной строке его введи (в целевой файл какой нибудь вывод)

Ссылка на комментарий
Поделиться на другие сайты

такой вопрос - ты вроде говорил что это локально работает

xmlHttp.open("POST", "httpr/" + file, true);

ты уверен что файл доступен по этому адресу: "httpr/" + file

выведи адрес полный и

в адресной строке его введи (в целевой файл какой нибудь вывод)

 

"httpr/" + file с Get работает вот аналогичная функция с GET:

 

function loadHTTPDoc(url, blockIdReturn, id)
{
	blockIdRet = blockIdReturn;

	xmlhttp = null;

	// Блок 1. Для FireFox
	if (window.XMLHttpRequest)
	{
		xmlhttp=new XMLHttpRequest();
		if (xmlhttp!=null)
		{
			xmlhttp.onreadystatechange=state_Change;
			var post_url = url.split("?");
			if (post_url[1]) 
			{
				xmlhttp.open("GET",'httpr/' + url, false);
			}
			else 
			{
				xmlhttp.open("GET",'httpr/' + url + '?id=' + id, false);
			}
			xmlhttp.send(null);
			document.getElementById(blockIdRet).innerHTML=xmlhttp.responseText;
		}
		else
		{
			alert("Ваш обозреватель не поддерживает ajax.");
		}
	}

	// Блок 2. Для IE
	else if (window.ActiveXObject)
	{
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		if (xmlhttp!=null)
		{
			xmlhttp.onreadystatechange=state_Change;
			var post_url = url.split("?");
			if (post_url[1]) {
				xmlhttp.open("GET",'httpr/' + url, false);
			}
			else {
				xmlhttp.open("GET",'httpr/' + url + '?id=' + id, false);
			}
			xmlhttp.send(null);
		}
		else
		{
			alert("Ваш обозреватель не поддерживает ajax.");
		}
	}
}

Ссылка на комментарий
Поделиться на другие сайты

Так эту проблему решил) с помощью jquery:

 

function AddHelpInfo()
{
$.ajax(
		{
			type: "POST",
			url: "httpr/init.InputHelpInfo.php",
			data: 
			{
				menu: document.getElementById("menu").value, 
				menu_id: document.getElementById("menu_id").value,
				type: document.getElementById("type").value, 
				text: document.getElementById("FCKeditor1").value
			}
		}
	  );
}

 

Теперь text вводиться нормально, только с кодировкой косяк. Кто знает как исправить? <_<

Ссылка на комментарий
Поделиться на другие сайты

Так эту проблему решил) с помощью jquery:

 

function AddHelpInfo()
{
$.ajax(
		{
			type: "POST",
			url: "httpr/init.InputHelpInfo.php",
			data: 
			{
				menu: $("#menu").val(), 
				menu_id: $("#menu_id").val(),
				type: $("#type").val(), 
				text: $("#FCKeditor1").val()
			}
		}
	  );
}

 

Теперь text вводиться нормально, только с кодировкой косяк. Кто знает как исправить? <_<

чуть короче

кодировка - в InputHelpInfo.php

сделай $_POST['text']=iconv('utf8','cp1251',$_POST['text']);

Ссылка на комментарий
Поделиться на другие сайты

чуть короче

кодировка - в InputHelpInfo.php

сделай $_POST['text']=iconv('utf8','cp1251',$_POST['text']);

 

фууууу все спасибо большое, только там вместо 'utf8' = 'UTF-8' , а вместо 'cp1251' = 'windows-1251'. Все работает как часы :rolleyes:

 

Вот: @$value = iconv('UTF-8', 'windows-1251',$_POST['text']);

Ссылка на комментарий
Поделиться на другие сайты

Заархивировано

Эта тема находится в архиве и закрыта для дальнейших ответов.

×
×
  • Создать...