首页 > Web开发 > 详细

asp.net项目下的web service返回json数据问题

时间:2014-02-18 08:27:16      阅读:415      评论:0      收藏:0      [点我收藏+]

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

bubuko.com,布布扣
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);
    }
}
bubuko.com,布布扣

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

bubuko.com,布布扣
var url = "/webservice.asmx/GetStores?cityPOSCodePrefix=" + cityPOSCodePrefix + "&deliveryStartTime=" + deliveryStartTime
                + "&deliveryEndTime=" + deliveryEndTime + "&is20To22=" + is20To22;
bubuko.com,布布扣

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

bubuko.com,布布扣
$.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; width: 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);
                }
bubuko.com,布布扣

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

bubuko.com,布布扣
    <webServices>
      <protocols>
        <add name="HttpGet" />
      </protocols>
    </webServices>
bubuko.com,布布扣

asp.net项目下的web service返回json数据问题

原文:http://www.cnblogs.com/paul-cheung/p/aspnet_webservice_json.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!