parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

post-charset

skiv 28.10.2008 12:04

При попытке загрузить парсерный скрипт с помощью вот такого яваскрипта
function testload(){
	var http_ready = 0;
	var xmlhttp = getHTTPObject();
	xmlhttp.open("POST", "test.p3?status=1&andmore=123", true);
	xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
	xmlhttp.onreadystatechange = function(){
		if(xmlhttp.readyState == 4) {
			if (xmlhttp.status == 200) {
				if(xmlhttp.responseText != ''){
					cnt = document.getElementById('load');
					cnt.innerHTML = xmlhttp.responseText;
				}
			} else {
				alert('Ошибка доставки данных:\nНевозможно получить ответ от сервера.');
			};
		}
	}
	xmlhttp.send(null);
}
Получаем ошибки в логе, причем каждый раз разные:

/test.p3(3:17): 'UTF-8ON.JS' unknown charset [parser.runtime]
/test.p3(3:17): 'UTF-8<PRE>' unknown charset [parser.runtime]
/test.p3(3:17): 'UTF-8<LI>' unknown charset [parser.runtime]
/test.p3(3:17): 'UTF-8BSP' unknown charset [parser.runtime]
/test.p3(3:17): 'UTF-8.P' unknown charset [parser.runtime]

парсерный код test.p3 :
@main[]
body = $request:body <br/>
post = $request:post-charset <br/>
^form:fields.foreach[k;v]{
	$k = $v
}[<br/>]
т.е. падает на строке с $request:post-charset
как показали дальнейшие опыты - падает также на любом упоминании $form:
если же в после кодировки указать точку с запятой, то начинает работать:
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8;');

проблема в том, что в используемых ява-скриптах не прописано явно Content-Type, а некоторые браузеры (FireFox3) дописывают туда автоматом charset=utf-8 без точки с запятой... и как следствие там ничего не работает :(

версия парсера 3.3.0