zoukankan      html  css  js  c++  java
  • Ajax调用webService(一) 不跨域。

    注:需要的js文件与组件(jquery-1.4.2.min.js和Newtonsoft.Json)

    同域:要调用的webservice与ajax请求页面在同一个网站下(本文中都是本地测试)。

    数据库(表名 CarUsing  cuid 主键自增列 int , carUsing varchar(100) 车辆用途)

    一、创建webService。

    在框架4.0中找不到Asp.Net Web服务应用程序。将框架更改为4.0以下即可找到。也创建一个网站在网站中添加webService。

    建立的web服务应用程序的结构如下。

    CarUsing.cs中代码如下:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
        public class CarUsing
        {
            public CarUsing() { }
    
            public CarUsing(string careUsing)
            {
                this.careUsing = careUsing;
            }
    
            public CarUsing(int cuid, string careUsing)
            {
                this.cuid = cuid;
                this.careUsing = careUsing;
            }
    
            private int cuid;
    
            public int Cuid
            {
                get { return cuid; }
                set { cuid = value; }
            }
    
            private string careUsing;
    
            public string CareUsing
            {
                get { return careUsing; }
                set { careUsing = value; }
            }
        }
    View Code

    Service1.asmx中的代码如下:

    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.Services;
    using Newtonsoft.Json;
    using System.Data.SqlClient;
    using System.Data;
    using System.Web.Script.Serialization;
    
    namespace WebService2
    {
        /// <summary>
        /// Service1 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempri/url")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        [System.Web.Script.Services.ScriptService]
        public class Service1 : System.Web.Services.WebService
        {
            [WebMethod(Description = "添加")]
            public string AddCarUsing(string cusing)
            {
                string result = "";
                string sql = string.Format("insert into CarUsing values(@carUsing)");
                SqlParameter para = new SqlParameter("@carUsing", cusing);
                result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text, para).ToString();
                return result;
            }
    
            [WebMethod(Description = "修改")]
            public string UpdateCarUsing(int id,string cusing)
            {
                string result = "";
                string sql = string.Format("update CarUsing set carUsing =@carUsing where cuid=@cuid");
                SqlParameter[] paras = {
                                            new SqlParameter("@carUsing",cusing),
                                            new SqlParameter("@cuid", id)
                                       };
                result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text, paras).ToString();
                return result;
            }
    
            [WebMethod(Description = "删除")]
            public string delCarUsing(string cuid)
            {
                string result = "";
                string sql = string.Format("delete from CarUsing where cuid=@cuid");
                SqlParameter para = new SqlParameter("@cuid", Convert.ToInt32(cuid));
                result = SqlHelper.ExecuteNonQuery(sql, CommandType.Text, para).ToString();
                return result;
            }
    
            [WebMethod(Description = "根据id查询数据")]
            public string getCarUsingBycuid(string cuid)
            {
                string json = "";
                CarUsing caru = new CarUsing();
                string sql = "select * from CarUsing where cuid =@cuid";
                SqlParameter para = new SqlParameter("@cuid", Convert.ToInt32(cuid));
                using (SqlDataReader dr = SqlHelper.ExecuteReader(sql, CommandType.Text, para))
                {
                    while (dr.Read())
                    {
                        caru = new CarUsing(
                             Convert.ToInt32(dr["cuid"]),
                             dr["carUsing"].ToString()
                            );
                    }
                    json = JsonConvert.SerializeObject(caru);
                }
                return json;
            }
    
            [WebMethod(Description = "查询所有数据")]
            public string getCarUsing()
            {
                string json = "";
                List<CarUsing> CarUsings = new List<CarUsing>();
                string sql = "select * from CarUsing order by cuid desc";
                using (SqlDataReader dr = SqlHelper.ExecuteReader(sql, CommandType.Text))
                {
                    while (dr.Read())
                    {
                        CarUsing carUsing = new CarUsing(
                             Convert.ToInt32(dr["cuid"]),
                             dr["carUsing"].ToString()
                            );
                        CarUsings.Add(carUsing);
                    }
                    json = JsonConvert.SerializeObject(CarUsings);
                }
                return json;
            }
        }
    }
    View Code

    注:在web.config中的<system.web>中添加

    <webServices>
          <protocols>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
          </protocols>
    </webServices>
    

      

    二、建立web网站

    添加Newtonsoft.Json.dll组件,且添加js文件

    在网站根目录下新建一个html页面HTMLPage1.htm。

    代码如下:

    <html>
    <head runat="server">
        <title>车用途Ajax+Json</title>
        <script src="js/jquery-1.4.2.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            var WebServiceURL = "http://localhost:22657/";
            //js版本必须2.0以下,2.0以上不ie8不支持get等方法。
            function showAll() {
                //返回Dafault页面的数据。
    
                $.ajax({
                    type: "POST",   //访问WebService使用Post方式请求
                    contentType: "application/json", //WebService 会返回Json类型
                    url: WebServiceURL + "Service1.asmx/getCarUsing", //调用WebService的地址和方法名称组合 ---- WsURL/方法名
                    data: "{}",         //这里是要传递的参数,格式为 data: "{paraName:paraValue}",下面将会看到       
                    dataType: 'json',
                    success: function (json) {
                        //回调函数,result,返回值
                        var jsons = eval('(' + json.d + ')');
                        var html = "<table border=1 bordercolor=6d6d6d cellspacing = 1>";
                        html += "<tr backgroundcolor='yellow'><td>Id</td><td>用途</td><td>操作</td></tr>";
                        for (var i = 0; i < jsons.length; i++) {
                            html += "<tr>";
                            html += "<td>" + jsons[i].Cuid + "</td><td>" + jsons[i].CareUsing + "</td><td><a href='javascript:;' onclick='UpdateInit(" + jsons[i].Cuid + ")'>修改</a> <a href='javascript:;' onclick='if(confirm("确定删除嘛?")){Delete(" + jsons[i].Cuid + ");}'>删除</a></td>";
                            html += "</tr>";
                        }
                        html += "</table>"
                        $("#div1").html(html);
                    }
                });
            }
            //准备添加
    function Insert() { $("#d1").show(); $("#d2").show(300); } function InsertInfo() { var json = '{"cusing":"' + form1.txtcarUsing.value + '"}'; $.ajax({ type: "POST", contentType: "application/json", url: WebServiceURL + "Service1.asmx/AddCarUsing", data: json, dataType: 'json', success: function (result) { showAll(); CloseDiv(); }, error: function (result) { alert("操作失败"); } }); } function Delete(id) { var json = '{"cuid":"'+id+'"}'; $.ajax({ url: WebServiceURL + "Service1.asmx/delCarUsing", contentType: "application/json;charset=utf-8", type: "POST", dataType: "json", data: json, success: function (json) { showAll(); }, error: function (json) { alert("操作失败!"); } }); } //修改初始化 function UpdateInit(cuid) { var json = '{"cuid":"' + cuid + '"}'; Insert(); //弹出修改框。 $.ajax({ type: "POST", contentType: "application/json", url: WebServiceURL + "Service1.asmx/getCarUsingBycuid", data: json, dataType: 'json', success: function (result) { var json = eval('[' + result.d + ']'); form1.txtcarUsing.value = json[0].CareUsing; form1.txtid.value = json[0].Cuid; cuid = json[0].Cuid; }, error: function (json) { alert("获取数据失败!"); } }); } //发送修改 function UpdateSend(id) { var json = '{"id":' + form1.txtid.value + ',"cusing":"' + form1.txtcarUsing.value + '"}'; $.ajax({ url: WebServiceURL + "Service1.asmx/UpdateCarUsing", contentType: "application/json;charset=utf-8", type: "POST", dataType: "json", data:json, success: function (json) { showAll(); CloseDiv(); }, error: function (msg) { alert("操作失败!"); } }); } function CloseDiv() { $('#d1').hide(500); $('#d2').hide(500); } </script> </head> <body onload="showAll()"> <form id="form1" runat="server"> <input type="button" value="添加车源用途" onclick="Insert()" /> <div id="div1"> </div> <div id="d1" style=" 100%; display: none; height: 100%; position: absolute; left: 0px; top: 0px; filter: alpha(opacity=70);"> </div> <div id="d2" style=" 100%; display: none; height: 100%; position: absolute; left: 0px; top: 0px;"> <table width="100%" height="100%"> <tr> <td valign="middle" align="center"> <div style=" 300px; height: 200px; background-color: White; border: 3px red solid;"> <input type="button" value="隐藏" onclick="CloseDiv()" /> <input type="hidden" id="txtid" /> 用途:<input type="text" id="txtcarUsing" /> <input type="button" value="添加" onclick="InsertInfo()" /> <input type="button" value="修改" onclick="UpdateSend()" /> </div> </td> </tr> </table> </div> </form> </body> </html>

      

     运行界面如下:

  • 相关阅读:
    ping与telnet的区别
    TCP连接的建立与关闭
    网络的7层协议
    oracle数据库中,分天查询数目
    求某个字符在字符串中的第5个位置
    高精度乘
    高精度加法
    二叉排序树(建树,先序,中序,后序遍历)
    求哈夫曼树的带权路径长度和
    HDU_1237_简单计算器
  • 原文地址:https://www.cnblogs.com/Jokers/p/3399742.html
Copyright © 2011-2022 走看看