为什么xmlHttp无法打开?

时间:2016-09-21 18:12:14

标签: javascript xml xmlhttprequest

我试图从外部服务器获取一些信息并执行以下操作:

var xmlHttp = SOAPClient._getXmlHttp();
xmlHttp.open("GET", url + "?wsdl", async);

其中xmlHTTP内容:

onabort: null
onerror: null
onload:  null
onloadend: null
onloadstart: null
onprogress: null
onreadystatechange: null
ontimeout: null
readyState: 1
response: ""
responseText: ""
responseType:""
responseURL: ""
responseXML: null
status: 0
statusText: ""
timeout: 0
upload: XMLHttpRequestUpload
withCredentials: false
__proto__: XMLHttpRequest
已返回preveous XMLHttpRequest的

和SOAPClient._getXmlHttp是

function() 
{
    try
    {
        if(window.XMLHttpRequest) 
        {
            var req = new XMLHttpRequest();             
            if(req.readyState == null) 
            {
                req.readyState = 1;
                req.addEventListener("load", 
                                    function() 
                                    {
                                        req.readyState = 4;
                                        if(typeof req.onreadystatechange == "function")
                                            req.onreadystatechange();
                                    },
                                    false);
            }
            return req;
        }
        if(window.ActiveXObject) 
            return new ActiveXObject(SOAPClient._getXmlHttpProgID());
    }
    catch (ex) {}
    throw new Error("Your browser does not support XmlHttp objects");
}

所以最后尝试打开xmlHttp我得到以下内容:

  

主线程上的同步XMLHttpRequest因不推荐使用   它对最终用户的体验产生不利影响。如需更多帮助,   检查http://xhr.spec.whatwg.org/

asyncfalse

UPD

我想它不能得到wsdl,但就我在js中的愚蠢而言,我无法弄清楚我是否正确,因为xmlHttp.responseXML没有我预料到的根据我使用soap和wsdl的经验。所以最后我得到了内部服务器错误,虽然当我使用SoapUI时我得到wsdl并获得运行良好的方法

UPD1 :这是函数发送请求的扩展代码:

var ns = (wsdl.documentElement.attributes["targetNamespace"] + "" == "undefined") ? wsdl.documentElement.attributes.getNamedItem("targetNamespace").nodeValue : wsdl.documentElement.attributes["targetNamespace"].value;
    // build SOAP request
    var sr = "soap request here";
    // send request
    var xmlHttp = SOAPClient._getXmlHttp();                     
    xmlHttp.open("POST", url, async);
    var soapaction = ((ns.lastIndexOf("/") != ns.length - 1) ? ns + "/" : ns) + method;
    xmlHttp.setRequestHeader("SOAPAction", soapaction);
    xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlHttp.send(sr);

soap请求是正确的,使用SoapUI执行返回正确的数据,但是从我的js app处理它会给出异常

  

选项https:' https地址' 500(内部   服务器错误)SOAPClient._sendSoapRequest @   soapclient.js:198SOAPClient._onLoadWsdl @   soapclient.js:162SOAPClient._loadWsdl @   soapclient.js:156SOAPClient.invoke @ soapclient.js:129Adapter.query   @ adapter.js:108Model.findAll @ model.js:49Organisation.init @   organisation.js:8(匿名函数)@ bootstrap.js:14each @   jquery.min.js:2each @jquery.min.js:2(匿名函数)@   bootstrap.js:9j @jquery.min.js:2fireWith @jquery.min.js:2ready @   jquery.min.js:2K @jquery.min.js:2

很明显,该文本的主要部分会记录到我的js app中的位置,但是

  

选项https:' https地址' 500(内部   服务器错误)

我发现可能的解决方案是更改Apache的httpd.conf(外部服务器所在的位置)而不是

  

AllowOverride All    选项无

对于当前域,到

  

AllowOverride All    选项全部

但这没有帮助。

0 个答案:

没有答案