JS调用webservice的通用函数

var xmlhttp;
var value = new Array();
var variable = new Array();

//Show Response MSG.
function handleStateChange() {
    var h = document.getElementById( "Label1" );
    if ( xmlhttp.readyState == 4 ) {
        if ( xmlhttp.status == 200 ) {
            alert( xmlhttp.responseText );
            h.innerHTML = xmlhttp.responseText;
            //h.innerHTML=xmlhttp.responseXML;
        }
        else if ( xmlhttp.status == 404 ) {
            h.innerHTML = "<br>找不到请求的服务器资源!";
        }
    }
    else if ( xmlhttp.readyState == 0 ) {
        h.innerHTML = "<br>未初始化!";
    }
    else if ( xmlhttp.readyState == 1 ) {
        h.innerHTML = "<br>正在加载……!";
    }
    else if ( xmlhttp.readyState == 2 ) {
        h.innerHTML = "<br>已经加载完成!";
    }
    else if ( xmlhttp.readyState == 3 ) {
        h.innerHTML = "<br>正在和服务器交互";
    }
    else {
        h.innerHTML = xmlhttp.responseXML;
    }

}

//Get Request Data's length
function getlen( str ) {
    var bytesCount = 0;
    for ( var i = 0; i < str.length; i++ ) {
        var c = str.charAt( i );
        if ( /^[\u0000-\u00ff]$/.test( c ) )   //匹配双字节
        {
            bytesCount += 1;
        }
        else {
            bytesCount += 2;
        }
    }
    return bytesCount;

}


//Create XMLHttpRequest Object
function createXMLHttpRequest() {

    if ( window.ActiveXObject ) {
        xmlhttp = new ActiveXObject( "Microsoft.XMLHTTP" );
    }
    else if ( window.XMLHttpRequst ) {
        xmlhttp = new XMLHttpRequest();
    }
}

//send Request By HTTP POST

function RequestByPost( method, variable, value, url, _Namespace ) {
    createXMLHttpRequest();
    var data;
    data = '<?xml version="1.0" encoding="utf-8"?>';
    data = data + '<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/">';
    data = data + '<soap:Body>';
    data = data + '<' + method + ' xmlns="' + _Namespace + '">';
    for ( var i = 0; i < variable.length; i++ ) {
        data = data + '<' + variable[i] + '>' + value[i] + '</' + variable[i] + '>';

    }
    data = data + '</' + method + '>';
    data = data + '</soap:Body>';
    data = data + '</soap:Envelope>';

    xmlhttp.onreadystatechange = handleStateChange;
    xmlhttp.Open( "POST", url, true );
    xmlhttp.SetRequestHeader( "Content-Type", "text/xml; charset=utf-8" );
    xmlhttp.SetRequestHeader( "Content-Length", getlen( data ) );
    xmlhttp.SetRequestHeader( "SOAPAction", _Namespace + method );
    xmlhttp.Send( data );
    alert( data );
}


//CallHelloWorld!
function SayHello_onclick() {
    //alert(document.getElementById('YourName').value);
    RequestByPost( "HelloWorld", new Array( "msg" ), new Array( document.getElementById( 'YourName' ).value ), "WebService.asmx", "localhost/" );
}
//WeatherReport Test:
function Button2_onclick() {
    RequestByPost( "getWeatherbyCityName", new Array( "theCityName" ), new Array( document.getElementById( 'CityName' ).value ), "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx", "http://WebXml.com.cn/" );
}
posted @ 2011-04-13 13:07  易独  阅读(344)  评论(0编辑  收藏  举报
乐巴儿 一个有声音的公众号
长按,识别二维码,加关注