Полезная информация

Юристы зарабатывают огромные деньги и славу, оперируя хорошим знанием законов. Правила форума — простой путь к успешному общению.

№101-09-2009 23:40:26

Ispanec
Участник
 
Группа: Members
Зарегистрирован: 01-09-2009
Сообщений: 4
UA: Firefox 3.5

XMLHttpRequest и веб сервис проблема!!!

Здравстуйте несколько дней не могу решить проблему.
Есть веб сервис метод которого я хочу вызвать из  сайта. Вот код.
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  проблемы, не знаю что делать!

Отсутствует

 

№201-09-2009 23:48:19

Lynn
Кофеман
 
Группа: Members
Откуда: Россия
Зарегистрирован: 16-02-2005
Сообщений: 1721
UA: Shiretoko 3.5
Веб-сайт

Re: XMLHttpRequest и веб сервис проблема!!!

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


Isn't it ironic... don't you think? — Alanis Morissette

Отсутствует

 

№303-09-2009 11:15:02

formatC'vt
Участник
 
Группа: Members
Откуда: М.О., г. Ивантеевка
Зарегистрирован: 09-01-2005
Сообщений: 94
UA: Firefox 3.5
Веб-сайт

Re: XMLHttpRequest и веб сервис проблема!!!

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

Выделить код

Код:

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>

"Software is like SEX - it's better when it's FREE" (C) Linus Torvalds

Отсутствует

 

№404-09-2009 09:29:47

Ispanec
Участник
 
Группа: Members
Зарегистрирован: 01-09-2009
Сообщений: 4
UA: IE 7.0

Re: XMLHttpRequest и веб сервис проблема!!!

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

Добавлено 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

Отсутствует

 

№524-08-2011 10:49:15

aikin
Участник
 
Группа: Members
Зарегистрирован: 24-08-2011
Сообщений: 3
UA: Firefox 6.0

Re: XMLHttpRequest и веб сервис проблема!!!

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

в 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 (24-08-2011 11:14:56)

Отсутствует

 

№624-08-2011 11:56:23

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 7.0

Re: XMLHttpRequest и веб сервис проблема!!!

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

Отсутствует

 

№724-08-2011 12:06:48

aikin
Участник
 
Группа: Members
Зарегистрирован: 24-08-2011
Сообщений: 3
UA: Firefox 6.0

Re: XMLHttpRequest и веб сервис проблема!!!

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 (24-08-2011 12:26:45)

Отсутствует

 

№824-08-2011 13:26:43

hydrolizer
Участник
 
Группа: Extensions
Зарегистрирован: 22-07-2009
Сообщений: 1945
UA: Firefox 7.0

Re: XMLHttpRequest и веб сервис проблема!!!

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

Отсутствует

 

№924-08-2011 13:56:51

aikin
Участник
 
Группа: Members
Зарегистрирован: 24-08-2011
Сообщений: 3
UA: Firefox 6.0

Re: XMLHttpRequest и веб сервис проблема!!!

hydrolizer пишет

UniversalXPConnect UniversalBrowserAccess

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

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]