В доступе отказано при использовании XMLHttpRequest.Открытый кросс-браузерный доступ - PullRequest
4 голосов
/ 10 декабря 2008

Я пытаюсь получить доступ к методу XMLHTTPRequest.open. Я даже включил netscape.security.PrivilegeManager.enablePrivilege ("UniversalBrowserRead");

но все равно не работает.

Я использую JavaScript и HTML для доступа к WebService.

Любая помощь была бы очень хороша

код

</p>

<p><html>
  <Head> 
    <Title>Calling A WebService from HTML </Title>
  </Head></p>

<p><Body onload='GetDataFrmWS()'>
  <form name="Form1" id="Form1" runat="server" method="post">
    <div id="DisplayData" > </div>
    <div id="Menu2"></div></p>

<p></form></p>

<p><script language='javascript'></p>

<p>var objHttp;
var objXmlDoc;</p>

<p>function GetDataFrmWS()
{
  alert('I M Here');
  var func = getDataFromWS();</p>

<p>}</p>

<p>function getDataFromWS()
{</p>

<p>if(window.ActiveXObject)
  {
     try 
        {
        objHttp = new ActiveXObject('Msxml2.XMLHTTP');</p>

<pre><code>    }
 catch (ex)
 {
  objHttp = new ActiveXObject('Microsoft.XMLHTTP');
 }

} еще если (window.XMLHttpRequest) { objHttp = new window.XMLHttpRequest (); netscape.security.PrivilegeManager.enablePrivilege ( "UniversalBrowserRead"); }

strEnvelope = '' + '' + '' + ' Hello ' + '' + '</ soap: Body>' + '</ soap: Envelope>';

var szUrl; szUrl = 'http://kamadhenu/Quoteme/GetCategories.asmx?op=HelloWorld'; objHttp.onreadystatechange = HandleResponse;

objHttp.open ('POST', szUrl, true); objHttp.setRequestHeader ('Content-Type', 'text / xml'); objHttp.setRequestHeader ( 'SOAPAction', 'http://tempuri.org/HelloWorld'); objHttp.send (strEnvelope);

}

функция HandleResponse () {
if (objHttp.readyState == 4) {

if (window.ActiveXObject) { objXmlDoc = новый ActiveXObject ("Microsoft.XMLDOM"); objXmlDoc.async = "ложь"; objXmlDoc.loadXML (objHttp.responseText); var nodeSelect = objXmlDoc.getElementsByTagName ("Menu1"). item (0); var Menu2 = objXmlDoc.getElementsByTagName ("Menu2"). item (0); . Document.getElementById ( 'DisplayData') innerHTML = nodeSelect.text;
document.getElementById ( 'menu2') innerHTML = Menu2.text. } еще { var Text = objHttp.responseText; var parser = new DOMParser (); objXmlDoc = parser.parseFromString (Text, 'text / xml'); var Value = objXmlDoc.documentElement.childNodes [0] .childNodes [0] .childNodes [0] .childNodes [0] .childNodes [0] .childNodes [0] .childNodes [0] .nodeValue; var Menu2 = objXmlDoc.documentElement.childNodes [0] .childNodes [0] .childNodes [0] .childNodes [0] .childNodes [0] .childNodes [1] .childNodes [0] .nodeValue; var Menu3 = objXmlDoc. document.getElementById ( 'DisplayData') innerHTML = Value;.
document.getElementById ( 'menu2') innerHTML = menu2. document.getElementById ( 'menu2') innerHTML + = menu3. } }

}

& Град;

Ответы [ 4 ]

2 голосов
/ 10 декабря 2008

Независимый от браузера код для XML HTTPRequest

Я использую следующий код для создания объекта XML. Это было разработано, чтобы обращаться со всеми браузерами (особенно IE и не IE)

/* Function to create an XMLHTTP object for all browsers */
function getXMLHTTPObject(){
    var xmlHttp;
    try{
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    } catch (e){
        // Internet Explorer
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e){
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    return xmlHttp;
}       
/* End Function */

P.S. Ваш код в вопросе не читается. Просьба отформатировать его

1 голос
/ 22 декабря 2008

Если вы пытаетесь использовать междоменный домен с XHR, вы можете посмотреть на метод JSONP. Проверьте документы JQuery для этого.

Требуется принять ответ JSON, но он работает в разных доменах.

1 голос
/ 22 декабря 2008

Насколько я знаю, запрос XMLHTTP должен указывать на страницу в том же поддомене html-страницы для различных разрешений браузеров.

Один трюк состоит в том, чтобы создать другую страницу на том же сервере на предпочитаемом вами языке и заставить ее обрабатывать запрос с сетью сервера.

Пример:

со своей HTML-страницы вы делаете запрос ajax на mydomain.com/externalrequest.php?url=www.google.com. и эта страница соединится (fsock / cURL и т. д.) с URL-адресом и вернет его

1 голос
/ 10 декабря 2008

Вот довольно краткий пример здесь

Попробуйте сделать свой URL http://recpushdata.cyndigo.com/Jobs.asmx/InsertXML

PS. Ваш код не читается в StackOverflow.

...