Страницы: 1
Здравстуйте несколько дней не могу решить проблему.
Есть веб сервис метод которого я хочу вызвать из сайта. Вот код.
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 проблемы, не знаю что делать!
Отсутствует
Не хватает прав для вызова функции (это ведь файл с диска, а не установленное расширение). Добавьте в код:
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
Отсутствует
Большое спасибо вам!!!!!!!!!!!!! уже неделю не знал что сделать
Добавлено 04-09-2009 09:34:44
Не хватает прав для вызова функции (это ведь файл с диска, а не установленное расширение). Добавьте в код:
Выделить кодКод:
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
Большое спасибо вам!!!!!!!!!!!!! уже неделю не знал что сделать
Добавлено 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 (24-08-2011 11:14:56)
Отсутствует
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 (24-08-2011 12:26:45)
Отсутствует
aikin
Думаю, домен, к которому идет обращение (localhost) находится в trusted zone IE (что, в общем-то, неудивительно) - поэтому запрос в IE проходит. Как быть в данном случае с FF - см. в этой теме выше про UniversalXPConnect UniversalBrowserAccess.
Отсутствует
UniversalXPConnect UniversalBrowserAccess
так я и нашел боле мене подходящую веточку форума, и эту штуку пробовал в коде она комментирована после того как не дала результатов кроме дополнительных вопросов при выполнении кода (разрешить изменение привилегии) такая же ошибка
Отсутствует
Страницы: 1