Здравстуйте несколько дней не могу решить проблему.
Есть веб сервис метод которого я хочу вызвать из  сайта. Вот код.
function GetValue()
    {
        req = new XMLHttpRequest();
        req.onprogress = onProgress;
        req.open("POST","http://kiparis.crimea.ua:81/ws/testKiparis.1cws",false);
        req.setRequestHeader("Content-Type", "text/xml");
       
        var str = '<?xml version="1.0" encoding="UTF-8"?>' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/>' +
        '<soap:Body> <m:Get xmlns:m="http://www.service-kiparis.feo"/> </soap:Body>' +
        '</soap:Envelope>';

        req.send(str);
        alert(req.responseText);
    }

Если исопльзую Internet Explorer 7 то всё прекрасно работает и возвращаются данные, если жи Fire Fox 3.5 то в firebug отслеживаю следующую ошибку uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIXMLHttpRequest.send]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: file:///C:/Documents%20and%20Settings/Admin/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9%20%D1%81%D1%82%D0%BE%D0%BB/%D1%81%D0%B0%D0%B9%D1%82/wer.html :: GetValue :: line 48" data: no] помогите опжалуйста разобраться! я уже использовал и JQuery и разные другие инстументы в IE7 всё нормально в FF3.5 и Opera  проблемы, не знаю что делать!

https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

Не хватает прав для вызова функции (это ведь файл с диска, а не установленное расширение). Добавьте в код:

Выделить код

Код:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');

К сожалению Вы не привели код функции onProgress, по этому приведу свой пример.

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function xmlrpcSynCall() {
    try {
	var req = new XMLHttpRequest();
	netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
	req.open('POST', "http://kiparis.crimea.ua:81/ws/testKiparis.1cws", false); 
	req.setRequestHeader("Content-type", "text/xml");
        var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/>' +
        '<soap:Body> <m:Get xmlns:m="http://www.service-kiparis.feo"/> </soap:Body>' +
        '</soap:Envelope>';
	  req.send(xml);
	  if(req.status == 200) {
	    try {	  
	      var response = req.responseText;
	      response = response.replace('<?xml version="1.0" encoding="UTF-8"?>', ""); // bug 336551
	      var xmlCode = new XML(response);
	      alert(xmlCode)	
	      return xmlCode;
  	    }		
	    catch (e) {
	    alert('Error (req.send): \n'+e.message);
	    }	
	  }
      }
    catch (e) {
    alert('Error: \n'+e.message);
    }
}
</script>
</head>
<body>
<button onclick="xmlrpcSynCall();">Кнопка с текстом</button>
</body>
</html>

результат выполнения этого запроса у меня получился следующий:

Выделить код

Код:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header/>
  <soap:Body>
    <m:GetResponse xmlns:m="http://www.service-kiparis.feo">
      <m:return xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Тест</m:return>
    </m:GetResponse>
  </soap:Body>
</soap:Envelope>

Большое спасибо вам!!!!!!!!!!!!! уже неделю не знал что сделать

04-09-2009 09:34:44

formatC'vt пишет

Не хватает прав для вызова функции (это ведь файл с диска, а не установленное расширение). Добавьте в код:

Выделить код

Код:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');

К сожалению Вы не привели код функции onProgress, по этому приведу свой пример.

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function xmlrpcSynCall() {
    try {
	var req = new XMLHttpRequest();
	netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
	req.open('POST', "http://kiparis.crimea.ua:81/ws/testKiparis.1cws", false); 
	req.setRequestHeader("Content-type", "text/xml");
        var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/>' +
        '<soap:Body> <m:Get xmlns:m="http://www.service-kiparis.feo"/> </soap:Body>' +
        '</soap:Envelope>';
	  req.send(xml);
	  if(req.status == 200) {
	    try {	  
	      var response = req.responseText;
	      response = response.replace('<?xml version="1.0" encoding="UTF-8"?>', ""); // bug 336551
	      var xmlCode = new XML(response);
	      alert(xmlCode)	
	      return xmlCode;
  	    }		
	    catch (e) {
	    alert('Error (req.send): \n'+e.message);
	    }	
	  }
      }
    catch (e) {
    alert('Error: \n'+e.message);
    }
}
</script>
</head>
<body>
<button onclick="xmlrpcSynCall();">Кнопка с текстом</button>
</body>
</html>

результат выполнения этого запроса у меня получился следующий:

Выделить код

Код:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header/>
  <soap:Body>
    <m:GetResponse xmlns:m="http://www.service-kiparis.feo">
      <m:return xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Тест</m:return>
    </m:GetResponse>
  </soap:Body>
</soap:Envelope>

вы случайно не знаете как добавить такую возможность и в Opera потому что там похожая проблема??

04-09-2009 09:50:02

Ispanec пишет

Большое спасибо вам!!!!!!!!!!!!! уже неделю не знал что сделать

04-09-2009 09:34:44

formatC'vt пишет

Не хватает прав для вызова функции (это ведь файл с диска, а не установленное расширение). Добавьте в код:

Выделить код

Код:

netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');

К сожалению Вы не привели код функции onProgress, по этому приведу свой пример.

Выделить код

Код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function xmlrpcSynCall() {
    try {
	var req = new XMLHttpRequest();
	netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
	req.open('POST', "http://kiparis.crimea.ua:81/ws/testKiparis.1cws", false); 
	req.setRequestHeader("Content-type", "text/xml");
        var xml = '<?xml version="1.0" encoding="UTF-8"?>' +
        '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/>' +
        '<soap:Body> <m:Get xmlns:m="http://www.service-kiparis.feo"/> </soap:Body>' +
        '</soap:Envelope>';
	  req.send(xml);
	  if(req.status == 200) {
	    try {	  
	      var response = req.responseText;
	      response = response.replace('<?xml version="1.0" encoding="UTF-8"?>', ""); // bug 336551
	      var xmlCode = new XML(response);
	      alert(xmlCode)	
	      return xmlCode;
  	    }		
	    catch (e) {
	    alert('Error (req.send): \n'+e.message);
	    }	
	  }
      }
    catch (e) {
    alert('Error: \n'+e.message);
    }
}
</script>
</head>
<body>
<button onclick="xmlrpcSynCall();">Кнопка с текстом</button>
</body>
</html>

результат выполнения этого запроса у меня получился следующий:

Выделить код

Код:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header/>
  <soap:Body>
    <m:GetResponse xmlns:m="http://www.service-kiparis.feo">
      <m:return xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">Тест</m:return>
    </m:GetResponse>
  </soap:Body>
</soap:Envelope>

вы случайно не знаете как добавить такую возможность и в Opera потому что там похожая проблема??

или где можно почитать про это мне надо чтобы вызовы веб - севисвсов происходили в любом браузере по крайней мере во многих. Пока только IE и FF

Уважаемые специалисты помоги пожалуйста голова уже кругом

в IE6 все без проблем
в FF 6.0   ничего не получается

в FF status=0, responseText="", responseXML=null
в чем проблема никак не могу понять, так нет бы нигде не работала так работает же в IE
ну или хотябы responseText возвращала уже потом парсить нет нив какую, прошу помощи

может быть это где то какието разрешения необходимо устанавливать, почему FF не видит ответа от сервера а IE видит

Выделить код

Код:

function getXmlHttp(){
var xmlhttp;
if (window.XMLHttpRequest)
{xmlhttp = new XMLHttpRequest();}
else
{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}



return xmlhttp;
}




function AnswerSerwer1C(xmlhttp){

if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
     var ДомОтвет = xmlhttp.responseXML.getElementsByTagName('m:return')[0] ;

       var ДанныеОтвета = ДомОтвет.childNodes[0].data;
       alert(ДанныеОтвета);
         }
         else{
         alert("не работает нифига  " + xmlhttp.responseText);
        }
  }

}

function myfunc(){

var xmlhttp = getXmlHttp();

xmlhttp.onreadystatechange = function() {AnswerSerwer1C(xmlhttp)}
xmlhttp.open('POST', 'http://127.0.0.1/frombro/ws/helloworld.1cws', true);
xmlhttp.send('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
        '<soap:Header/>' +
        '<soap:Body> <m:hello xmlns:m="http://www.sample-package.org"/></soap:Body>' +
        '</soap:Envelope>');

}

aikin
Проверьте свой код на синхронном вызове. Хотя бы для того, чтобы убедиться, что FF не считает ваш запрос кросс-доменным (которые запрещены для untrusted callers, коими являются скрипты веб-страниц).

hydrolizer
сделал синхронным, на send вообще скидывает сабака  Error(req.send)  Component returned failure code: 0Х80004005 (NS_ERROR_FAILURE)
а можно ли как то это обойти, всмысле запрет на кросс-доменные запросы?

причем в IE и синхронно работает ну что за...

если я правильно понял то ограничение на кросс-доменность распространяется на весь метод XMLHttpRequest вне зависимости от броузера, если в ие отрабатывает наверно не считает крос доменным



Выделить код

Код:

function getXmlHttp(){
var xmlhttp;
if (window.XMLHttpRequest)
{xmlhttp = new XMLHttpRequest();}
else
{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}



return xmlhttp;
}

function IE(str){
    if (browser.msie || browser.firefox3) return  "m:" + str
    else return str
}


function AnswerSerwer1C(xmlhttp){

if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
     var ДомОтвет = xmlhttp.responseXML.getElementsByTagName('m:return')[0] ;

       var ДанныеОтвета = ДомОтвет.childNodes[0].data;
       alert(ДанныеОтвета);
         }
         else{
         alert("Да еп вашу мать какого хера  " + xmlhttp.responseText);
        }
  }

}

function myfunc(){

var xmlhttp = getXmlHttp();

//xmlhttp.onreadystatechange = function() {AnswerSerwer1C(xmlhttp)}
 //netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
xmlhttp.open('POST', 'http://127.0.0.1/frombro/ws/helloworld.1cws', false);
xmlhttp.setRequestHeader("Content-type", "text/xml");
var xml ='<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">' +
        '<soap:Header/>' +
        '<soap:Body> <m:hello xmlns:m="http://www.sample-package.org"/></soap:Body>' +
        '</soap:Envelope>';
        try { 
xmlhttp.send(xml);
 }        
        catch (e) {
        alert('Error (req.send): \n'+e.message);
        }    
if (xmlhttp.readyState == 4) {
     if(xmlhttp.status == 200) {
     var ДомОтвет = xmlhttp.responseXML.getElementsByTagName('m:return')[0] ;

       var ДанныеОтвета = ДомОтвет.childNodes[0].data;
       alert(ДанныеОтвета);
         }
         else{
         alert("Не работает  " + xmlhttp.responseText);
        }
  }
}

aikin
Думаю, домен, к которому идет обращение (localhost) находится в trusted zone IE (что, в общем-то, неудивительно) - поэтому запрос в IE проходит. Как быть в данном случае с FF - см. в этой теме выше про UniversalXPConnect UniversalBrowserAccess.

hydrolizer пишет

UniversalXPConnect UniversalBrowserAccess

так я и нашел боле мене подходящую веточку форума, и эту штуку пробовал в коде она комментирована после того как не дала результатов кроме дополнительных вопросов при выполнении кода (разрешить изменение привилегии) такая же ошибка