现在的位置: 首页 > 综合 > 正文

javascript 利用xmlhttp访问asp.net 2.0 的webservice

2013年10月14日 ⁄ 综合 ⁄ 共 2431字 ⁄ 字号 评论关闭

看了网上的很多,基本都一样,webservice上输入参数,然后用soap传值,感觉不是太方便,每次写一大堆数据

还是用普通的xmlhttp方式,只需要提交简单的参数值对就可以了像:http://localhost/as.aspx?xxx=bb这样的格式

 

以下为post方法

注:以下代码中的scUI为事先写好的一个组件包,里面包括了一个异步xmlhttp组件

 

这个组件提供一个setFormParm(formId)方法输入参数

setParam(param)输入简单参数

sendRequestByPost(func,url)方法request 服务器webservice

createXmlHttp()为创建初始化xmlhttp对像

 

例子webservice页面sc_test.asmx ,比较老套还是sayhello

 

using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Data;
using System.Data.SqlClient;
using System.Text;

 

/// <summary>
/// SC_WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SC_WebService : System.Web.Services.WebService {

    public SC_WebService () {

        //如果使用设计的组件,请取消注释以下行
        //InitializeComponent();
    }

    [WebMethod]
    public string SayHello()
    {
        HttpRequest Request = System.Web.HttpContext.Current.Request;
        string name= Request.Params["name"];
        return "hello "+name;
    }

 

}

 

在WebService中要使用HttpContext必须要在web.config文件中加入以下代码

<webService>

    <protocols>

        <add name="HttpGet"/>

        <add name="HttpPost"/>

    </protocols>

</webService>

 

客户端页面

 

<html>

<script type="text/javascript" src="../util/js/commonEngine.js"></script>

<!--以上是一个组件包-->

<script type="text/javascript">

//使用scUI中的xmlhttp

function test(){

    var fui=new scUI();

    fui.createXmlHttp();

    fui.setParam("name="+document.getElementById("name").value);

 

    //以pos方式

    fui.sendRequestByPost(function(){

            if(fui.xmlhttp.readyState==4&&fui.xmlhttp.status==200){

                //webservice返回的是xml数据

                var reqxml=fui.xmlhttp.responseXml;

                //得到里面的值

                var text=(reqxml.childNodes)[1].text);

                alert(text);

                fui=null;

            }

        },"sc_test.asmx/SayHello");

}

 

//以上alert(text)值就可以得到SayHello的数据了

 

//以下是scUI中xmlhttp的部分代码

function scUI(){this.xmlhttp=false;this.paramString="";}

//建立xmlhttp,比较老套,网上有很多,这里省略

 

//pos方式发送请求

scUI.prototype.sendRequestByPost=function(c,url){

    this.xmlhttp.open("post",url,true);

    this.xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");

    this.xmlhttp.onreadystatechange=c;

    this.xmlhttp.send(this.paramString);

}

 //设置参数

scUI.prototype.setParam=function(s){

    this.xmlhttp.paramString=s; //如果后台出现乱码(比如java后台),则使用encodeURI(encodeURI(s))进行两次编码,然后后台再解码,asp.net一般来说不会出现太大问题,则不必使用
}

 

 

</script>

本人目前还在学习asp.net中,原来主要使用java,以上如有不对的地方还请指出
 

 

 

抱歉!评论已关闭.