Отказано При использовании XMLHttpRequest.Open перекрестного доступа через браузер

голоса
4

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

но до сих пор ее не работает.

Я использую JavaScript и HTML, чтобы получить доступ к WebService.

Любая помощь будет очень большой

Код

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

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

</form>

<script language='javascript'>

var objHttp; var objXmlDoc;

function GetDataFrmWS() { alert('I M Here'); var func = getDataFromWS();

}

function getDataFromWS() {

if(window.ActiveXObject) { try { objHttp = new ActiveXObject('Msxml2.XMLHTTP');

    }
 catch (ex)
 {
  objHttp = new ActiveXObject('Microsoft.XMLHTTP');
 }

} else if (window.XMLHttpRequest) { objHttp = new window.XMLHttpRequest(); netscape.security.PrivilegeManager.enablePrivilege(UniversalBrowserRead); }

strEnvelope = '<soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/>' + '<soap:Body>' + ' <HelloWorld xmlns=http://tempuri.org/>' + ' <Dummy xsi:type=xsd:string>Hello</Dummy>'+ ' </HelloWorld>'+ '</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);

}

function HandleResponse() {
if (objHttp.readyState == 4) {

if (window.ActiveXObject) { objXmlDoc = new ActiveXObject(Microsoft.XMLDOM); objXmlDoc.async=false; 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; } else { 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.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[0].childNodes[1].childNodes[1].nodeValue; document.getElementById('DisplayData').innerHTML=Value;
document.getElementById('Menu2').innerHTML=Menu2; document.getElementById('Menu2').innerHTML+=Menu3; } }

}

</script> <input type='Button' Text='Click Me' onclick='GetDataFrmWS()' value=Click Me!/> ° </Body> </HTML>

Задан 10/12/2008 в 06:56
источник пользователем
На других языках...                            


4 ответов

голоса
2

Браузер Независимый код 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 */

PS Вы код в вопросе не может быть прочитан. Pls отформатировать

Ответил 10/12/2008 в 07:34
источник пользователем

голоса
1

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

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

Ответил 22/12/2008 в 14:24
источник пользователем

голоса
1

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

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

Пример:

из вашей HTML странице вы сделать запрос Аякса mydomain.com/externalrequest.php?url=www.google.com и что страница будет подключаться (fsock / Curl и т.д.), чтобы «URL» и вернуть его

Ответил 22/12/2008 в 14:21
источник пользователем

голоса
1

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

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

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

Ответил 10/12/2008 в 07:19
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more