zoukankan      html  css  js  c++  java
  • asp.net项目下的web service返回json数据问题

    App_Code目录下放置WebService.cs文件,文件内容如:

    using System;
    using System.Collections.Generic;
    using System.Data;
    using System.Data.SqlClient;
    using System.Linq;
    using System.ServiceModel.Web;
    using System.Text;
    using System.Web;
    using System.Web.Script.Serialization;
    using System.Web.Script.Services;
    using System.Web.Services;
    using System.Web.UI.WebControls;
    
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    
    public class WebService : System.Web.Services.WebService
    {
       [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
        public void GetStores(string deliveryStartTime, string deliveryEndTime, bool is20To22 = false, string cityPOSCodePrefix = "960")
        {
            var storeListJson = new StringBuilder();
    
            //
            var storeList = GetStoreList(deliveryStartTime, deliveryEndTime, is20To22, cityPOSCodePrefix);
            storeListJson.Append("[");
            foreach (var store in storeList)
            {
                string format = "{{"Value":"{0}", "Text":"{1}"}}";
    
                storeListJson.Append(string.Format(format, store.Value.ToString(), store.Text.ToString()));
                storeListJson.Append(",");
            }
            storeListJson.Remove(storeListJson.Length - 1, 1);
            storeListJson.Append("]");
            //
    
            Context.Response.Clear();
            Context.Response.ContentType = "text/json; charset=utf-8";
            //Context.Response.AddHeader("content-disposition", "attachment; filename=export.json");
            //Context.Response.AddHeader("content-length", storeListJson.Length.ToString());
            Context.Response.Flush();
            Context.Response.Write(storeListJson);
        }
    }

    WebService.asmx文件可以放在网站跟目录下,跟目录下的页面请求WebService拿json数据时:

    var url = "/webservice.asmx/GetStores?cityPOSCodePrefix=" + cityPOSCodePrefix + "&deliveryStartTime=" + deliveryStartTime
                    + "&deliveryEndTime=" + deliveryEndTime + "&is20To22=" + is20To22;

    js对请求返回的数据进行处理,如下:

    $.ajax({
                    url: url,
                    type: 'get',
                    async: false,
                    contentType: 'text/json; charset=utf-8',
                    success: function (result) {
                        //alert(result.d[0]);
                        var storeListString = "";
                        var storeLiValueStart = "<li style="float: left; margin-left: 40px; margin-top: 8px;  120px; border-radius: 8px; background-color: #FFF; border: 2px solid rgb(0,119,175);color:#0077af; padding: 4px 0px; text-align: center; cursor: pointer" id="";
                        var storeLiValueEndAndTextStart = "">";
                        var storeLiTextEnd = "</li>";
    
                        for (var i = 0; i < result.length; i++) {
                            storeListString += storeLiValueStart;
                            storeListString += result[i].Value;
                            storeListString += storeLiValueEndAndTextStart;
                            storeListString += result[i].Text;
                            storeListString += storeLiTextEnd;
                        }
    
                        $("#storeListTest").html(storeListString);
                    }

    注意:要想拿到返回的json数据,web.config文件中system.web节点下必须加如下节点:

        <webServices>
          <protocols>
            <add name="HttpGet" />
          </protocols>
        </webServices>
  • 相关阅读:
    风险分解结构
    WBS 工作分解结构
    react函数式组件(非路由组件)实现路由跳转
    react使用antd组件递归实现左侧菜单导航树
    React4.0以上如何获取当前的路由地址呢
    浅谈react传入路由参数---withRouter组件
    react项目实现维持登录与自动登录
    async和await应用步骤分析+优化异常处理
    跨域场景&&跨域处理方案
    vscode react中标签自动补全 vscode jsx语法自动补全html标签
  • 原文地址:https://www.cnblogs.com/paul-cheung/p/aspnet_webservice_json.html
Copyright © 2011-2022 走看看