URL с русскими буквами
в java скрипте формируется url для запроса методом get
обрабатывается в файле "файл.cgi" url="файл.cgi"+"?fam="+str1+"&fio="+str2; oXml.open('GET', url, true); (используется Ajax) возникает ошибка при выполнении Opera и Mozilla, говорит, что не найден файл с именем файл.cgi пробовала использовать escape(), encodeURI(), encodeURIComponent() результат тот же. возможно, что просто неправильно писала Изменить имя файла нельзя. Помогите, пожалуйста |
код странички в студию
|
это код чисто java скрипта
function lfunction()
{
if(typeof(XMLHttpRequest)!='undefined'){
var getXMLHttpObj = function(){ return new XMLHttpRequest(); }
}
else {
var getXMLHttpObj = function()
{
var activeXObjects = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0',
'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
for(var i=0; i<activeXObjects.length; i++)
{
try
{return new ActiveXObject(activeXObjects[i]);}
catch(err){}
}
}
}
var oXml = getXMLHttpObj();
var str1=escape(document.all.fam.value);
var str2=escape(document.all.fio.value);
url="файл.cgi"+"?fam="+str1+"&fio="+str2;
oXml.open('GET', url, true);
oXml.onreadystatechange = processingFunction;
oXml.send(null);
function processingFunction()
{
if(oXml.readyState!=4) return; // запрос не выполнен
var xmlDoc = oXml.responseText.split("|");
document.all.form.innerHTML = '<PRE><b><i>Полученные данные:</i><p>Фамилия: </b>'+unescape(xmlDoc[0])+'</p>'+'<p><b>Должность:</b>'+unescape(xmlDoc[1])+'</p></PRE>';
}
}
кусок страницы (по нажатию кнопки вызывается скриптик)
<form name="form1" method="get" action="файл.cgi">
<div align="left">
<p align="left"> Фамилия: <input name="fam" type="text" id="fam" size="20" length="25"</p>
<p align="left"> Должность: <input name="fio" type="text" id="fio" size="20" length="25"</p>
<p align="left">
<input type="button" name="send" id="send" value="Отправить" onclick="lfunction()">
</p>
</form>
скипт файл.cgi
#!/usr/bin/perl -w
print "Content-Type: text/xml\n\n";
$q=$ENV{QUERY_STRING};
@q=split(/&/,$q);
foreach $a (@q)
{
@vars=split(/=/,$a,2);
$q{$vars[0]}=$vars[1];
}
print $q{"fam"};
print("|");
print $q{"fio"};
|
а зачем русские буквы в имени файла?
|
я понимаю, что так никто не делает.
Просто суть в том чтобы научиться работать с кодировками. И в данном случае имя обязательно должно быть русским. |
escape() работает с русскими значениями в полях ввода
но для url не получатся возможно надо сделать обратное преобразование в файл.cgi? меня смущает, что ошибка состоит в том, что сам файл.cgi was not found on this server, хотя он рядышком лежит |
а вы уверены, что сам файл выполняется?
у меня просто сейчас на загрузке статичной страницы ваш код более чем отлично отработал ссылка на страницу получилась такого рода: Код:
http://javascript/%D1%84%D0%B0%D0%B9%D0%BB.htm?fam=qwe&fio=qweпоставьте firebug под Mozilla , и проверьте что он выдаст |
Цитата:
|
спасибо, я попробую firebug
я уверена, что скрипт выполняется. если имя скрипта поменять на нормальное, то все отлично работает |
The requested URL /web_server/5/лаба.cgi was not found on this server.
Firebug показывает вменяемый URL: "%D0%BB%D0%B0%D0%B1%D0%B0.cgi?fam=dfs&fio=gds" совсем не понимаю в чем дело добавила в скрипт файл.cgi код для обратного перевода в русские буквы-не работает |
| Часовой пояс GMT +3, время: 04:28. |