您的位置:首页 > Web前端 > JavaScript

EXTJS Ajax数据请求(一)

2012-08-03 09:41 204 查看
在页面EAjax01.htm中使用
Ext.Ajax.request从Web Service “WSForExtJS.asmx”中请求数据。
    如果EAjax01.htm同WSForExtJS.asmx在同一工程中,
    假设EAjax01.htm中请求Web Service的路径使用的是http://IP
Address/.../WSForExtJS.asmx”

在IE中可以使用

http://localhost/JQueryAndExtJSDemo/ExtJSPages/EAjax01.htm   
E:\Project\TryProject\JQueryAndExtJSDemo\JQueryAndExtJSDemo\ExtJSPages\EAjax01.htm

和http://IP
Address/JQueryAndExtJSDemo/ExtJSPages/EAjax01.htm
三种方式来访问。

但在Firefox和Chrome中只能使用

E:\Project\TryProject\JQueryAndExtJSDemo\JQueryAndExtJSDemo\ExtJSPages\EAjax01.htm

和http://IP Address/JQueryAndExtJSDemo/ExtJSPages/EAjax01.htm
来中方法来访问。

使用http://localhost的方式无法请求到数据。

EAjax01.htm 的Source内容:

<!DOCTYPE HTML>
<html>
<head>
    <title></title>
    <link href="extjs/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
    <script src="extjs/ext-all-debug.js" type="text/javascript"></script>
</head>
<script type="text/javascript">

    var _webServiceURL = "http://10.40.33.128/POCWBSWebService/";
    //var _webServiceURL = "http://localhost/POCWBSWebService/";
    //var _webServiceURL = "";

    Ext.onReady(function () {

        Ext.create('Ext.Button', {
            text: 'Ajax XML String',
            renderTo: Ext.getBody(),
            handler: function () {
                Ext.Ajax.request({
                    url: _webServiceURL + 'WService/WSForExtJS.asmx/GetUsers01',
                    scriptTag: true,
                    params: {
                        id: 1
                    },
                    success: function (response) {
                        var text = response.responseText;
                        alert(text)
                        // process server response here
                    },
                    failure: function (response, opts) {
                        alert("fail");
                        alert(response);
                        alert(opts);
                    }
                });

            }
        });

        Ext.create('Ext.Button', {
            text: 'GetUsers02 Json String',
            renderTo: Ext.getBody(),
            handler: function () {
                Ext.Ajax.request({
                    url: _webServiceURL + 'WService/WSForExtJS.asmx/GetUsers02',
                    params: {
                        id: 1
                    },
                    success: function (response) {
                        var text = response.responseText;
                        alert(text);
                        var data = Ext.JSON.decode(text);     //is not json data
                        var dataJson = Ext.JSON.decode(data);     //is json data  convert 2 times
                        alert(data);
                        alert(dataJson.success);
                        alert(dataJson.total);
                        // process server response here
                    }
                });
            }
        });

        Ext.create('Ext.Button', {
            text: 'GetUsers03 Json Object',
            renderTo: Ext.getBody(),
            handler: function () {
                Ext.Ajax.request({
                    url: _webServiceURL +
4000
'WService/WSForExtJS.asmx/GetUsers03',
                    params: {
                        id: 1
                    },
                    success: function (response) {
                        var text = response.responseText;
                        alert(text);
                        var data = Ext.JSON.decode(text);    // is json data convert 1 times
                        alert(data);
                        alert(data.success);
                        alert(data.total);
                        // process server response here
                    }
                });
            }
        });

        Ext.create('Ext.Button', {
            text: 'GetUsers04 Json Object',
            renderTo: Ext.getBody(),
            handler: function () {
                Ext.Ajax.request({
                    url: _webServiceURL + 'WService/WSForExtJS.asmx/GetUsers04',
                    params: {
                        id: 1
                    },
                    success: function (response) {
                        var text = response.responseText;
                        alert(text);
                        var data = Ext.JSON.decode(text);    // is json data convert 1 times
                        alert(data);
                        alert(data.success);
                        alert(data.total);
                        // process server response here
                    }
                });
            }
        });

        Ext.create('Ext.Button', {
            text: 'GetUsers05 Json Object From DataTable',
            renderTo: Ext.getBody(),
            handler: function () {
                Ext.Ajax.request({
                    url: _webServiceURL + 'WService/WSForExtJS.asmx/GetUsers05',
                    params: {
                        id: 1
                    },
                    success: function (response) {
                        var text = response.responseText;
                        alert(text);
                        var data = Ext.JSON.decode(text);    // is json data convert 1 times
                        alert(data);
                        alert(data.success);
                        alert(data.total);
                    }
                });
            }

        });

        var pagesize = 2;
        Ext.create('Ext.Button', {
            text: 'Grid Request Local aspx Mulit Page',
            renderTo: Ext.getBody(),
            handler: function () {
                var itemsPerPage = 2;

                Ext.define('UserModel', {
                    extend: 'Ext.data.Model',
                    fields: ['name', 'email', 'phone']
                });
                var userStore = Ext.create('Ext.data.Store', {
                    autoLoad: false,
                    model: 'UserModel',
                    pageSize: itemsPerPage,
                    proxy: {
                        type: 'ajax',
                        url: _webServiceURL + 'WService/ListStore.aspx',
                        reader: {
                            type: 'json',
                            root: 'users',
                            totalProperty: 'total'
                        }
                    }
                });

                userStore.load({
                    callback: function (r, options, success) {
                        if (success) {
                            for (var i = 0; i < r.length; i++) {
                                var record = r[i];
                                var v = record.data.name;
                                //alert(v);
                            }
                        }
                        else {
                            alert("fail");
                        }
                    }
                });

                Ext.create('Ext.grid.Panel', {
                    title: 'Simpsons',
                    store: userStore,
                    columns: [
                            { header: 'Name', dataIndex: 'name' },
                            { header: 'Email', dataIndex: 'email', flex: 1 },
                            { header: 'Phone', dataIndex: 'phone' }
                        ],
                    width: 400,
                    height: 300,
                    dockedItems: [{
                        xtype: 'pagingtoolbar',
                        store: userStore,   // same store GridPanel is using
                        dock: 'bottom',
                        displayInfo: true
                    }],
                    renderTo: Ext.getBody()
                });
            }

        });

        Ext.create('Ext.Button', {
            text: 'Grid Request Local ashx Mulit Page',
            renderTo: Ext.getBody(),
            handler: function () {
                var itemsPerPage = 2;

                Ext.define('UserModel', {
                    extend: 'Ext.data.Model',
                    fields: ['name', 'email', 'phone']
                });
                var userStore = Ext.create('Ext.data.Store', {
                    autoLoad: false,
                    model: 'UserModel',
                    pageSize: itemsPerPage,
                    proxy: {
                        type: 'ajax',
                        url: _webServiceURL + 'WService/ListStore.ashx',
                        reader: {
                            type: 'json',
                            root: 'users',
                            totalProperty: 'total'
                        }
                    }
                });

                userStore.load({
                    callback: function (r, options, success) {
                        if (success) {
                            for (var i = 0; i < r.length; i++) {
                                var record = r[i];
                                var v = record.data.name;
                                //alert(v);
                            }
                        }
                        else {
                            alert("fail");
                        }
                    }
                });

                Ext.create('Ext.grid.Panel', {
                    title: 'Simpsons',
                    store: userStore,
                    columns: [
                            { header: 'Name', dataIndex: 'name' },
                            { header: 'Email', dataIndex: 'email', flex: 1 },
                            { header: 'Phone', dataIndex: 'phone' }
                        ],
                    width: 400,
                    height: 300,
                    dockedItems: [{
                        xtype: 'pagingtoolbar',
                        store: userStore,   // same store GridPanel is using
                        dock: 'bottom',
                        displayInfo: true
                    }],
                    renderTo: Ext.getBody()
                });
            }

        });

        Ext.create('Ext.Button', {
            text: 'Grid Request Local Web Service Mulit Page',
            renderTo: Ext.getBody(),
            handler: function () {
                var itemsPerPage = 2;

                Ext.define('UserModel', {
                    extend: 'Ext.data.Model',
                    fields: ['name', 'email', 'phone']
                });

                var userStore = Ext.create('Ext.data.Store', {
                    autoLoad: false,
                    model: 'UserModel',
                    pageSize: itemsPerPage,
                    proxy: {
                        type: 'ajax',
                        extraParams: {
                            id: 'robbie'
                        },
                        url: _webServiceURL + 'WService/WSForExtJS.asmx/GetUsers07',
                        method: 'POST',
                        headers: { 'Content-Type': 'application/json;' },
                        reader: {
                            type: 'json',
                            root: 'users',
                            totalProperty: 'total'
                        }

                    }
                });

                userStore.load({
                    callback: function (r, options, success) {
                        if (success) {
                            for (var i = 0; i < r.length; i++) {
                                var record = r[i];
                                var v = record.data.name;
                                //alert(v);
                            }
                        }
                        else {
                            alert("fail");
                        }
                    }
                });

                var pnlGrid = Ext.create('Ext.grid.Panel', {
                    title: 'Simpsons',
                    store: userStore,
                    columns: [
                            { header: 'Name', dataIndex: 'name' },
                            { header: 'Email', dataIndex: 'email', flex: 1 },
                            { header: 'Phone', dataIndex: 'phone' }
                        ],
                    width: 400,
                    height: 300,
                    dockedItems: [{
                        xtype: 'pagingtoolbar',
                        store: userStore,   // same store GridPanel is using
                        dock: 'bottom',
                        displayInfo: true
                    }],
                    renderTo: Ext.getBody()
                });

                pnlGrid.reconfigure(userStore);

            }

        });

        var userStore;
        var pnlGrid;
        var iClickCount = 0;
        var userStore;

        Ext.define('UserModel', {
            extend: 'Ext.data.Model',
            fields: ['name', 'email', 'phone']
        });

        Ext.create('Ext.Button', {
            text: 'Grid Request Local Web Service Mulit Page Change Source',
            renderTo: Ext.getBody(),
            handler: function () {
                    var itemsPerPage = 2;

                    iClickCount = iClickCount + 1;

                    if (!pnlGrid) {

                        userStore = Ext.create('Ext.data.Store', {
                        autoLoad: false,
                        model: 'UserModel',
                        pageSize: itemsPerPage,
                        proxy: {
                                type: 'ajax',
                                url: _webServiceURL + 'WService/WSForExtJS.asmx/GetUsers08',
                                method: 'POST',
                                headers: { 'Content-Type': 'application/json;' },
                                reader: {
                                    type: 'json',
                                    root: 'users',
                                    totalProperty: 'total'
                                }

                            }
                        });

                        pnlGrid = Ext.create('Ext.grid.Panel', {
                            title: 'Simpsons',
                            store: userStore,
                            columns: [
                                { header: 'Name', dataIndex: 'name' },
                                { header: 'Email', dataIndex: 'email', flex: 1 },
                                { header: 'Phone', dataIndex: 'phone' }
                            ],
                            width: 400,
                            height: 300,
                            dockedItems: [{
                                xtype: 'pagingtoolbar',
                                store: userStore,   // same store GridPanel is using
                                dock: 'bottom',
                                displayInfo: true
                            }],
                            renderTo: Ext.getBody()
                        });
                    }
                    else {
                        pnlGrid.getStore().removeAll();
                    }

                    userStore.currentPage = 1;
                    userStore.on('beforeload', function (store, options) {
                        var new_params = { ClickCount: iClickCount };
                        Ext.apply(store.proxy.extraParams, new_params);
                    });

                    pnlGrid.store.load({
                        params: { start: 0, limit: itemsPerPage}
                    });

                
            }

        });

    });
</script>
<body>

</body>
</html>


Web Service文件WSForExtJS.asmx的Source内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
using System.Data;

namespace JQueryAndExtJSDemo.ExtJSPages.WService
{
    /// <summary>
    /// Summary description for WSForExtJS
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [Sy
edf3
stem.Web.Script.Services.ScriptService]
    public class WSForExtJS : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }

        [WebMethod]
        public string GetUsers01()
        {
            string _strReturn = "{\"success\": true,\"total\": 2,\"users\": [{ \"name\": \"LisaA\", \"email\": \"lisa@simpsons.com\", \"phone\": \"555-111-1224\" },{ \"name\": \"Bart\", \"email\": \"bart@simpsons.com\", \"phone\": \"555-222-1234\" }]}";
            return _strReturn;
        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers02()
        {
            HttpResponse response = HttpContext.Current.Response;

            string _strReturn = "{\"success\": true,\"total\": 4,\"users\": [{ \"name\": \"LisaA\", \"email\": \"lisa@simpsons.com\", \"phone\": \"555-111-1224\" },{ \"name\": \"Bart\", \"email\": \"bart@simpsons.com\", \"phone\": \"555-222-1234\" }]}";            
            var jsonSerializer = new JavaScriptSerializer();
            string JSONToReturn = jsonSerializer.Serialize(_strReturn);

            response.Write(JSONToReturn);
            response.End();

        }

        
        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers03()
        {
            List<User> users = new List<User>();
            users.Add(new User("LisaA", "lisaA@simpsons.com", "555-111-1224"));
            users.Add(new User("LisaB", "lisaB@simpsons.com", "555-111-1224"));
            var jsonSerializer = new JavaScriptSerializer();
            string _strReturn = "{\"success\": true,\"total\": 2,\"users\": " + jsonSerializer.Serialize(users) + "}";
            HttpResponse response = HttpContext.Current.Response;
            response.Write(_strReturn);
            response.End();

        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers04()
        {
            HttpResponse response = HttpContext.Current.Response;

            string _strReturn = "{\"success\": true,\"total\": 2,\"users\": [{ \"name\": \"LisaA\", \"email\": \"lisa@simpsons.com\", \"phone\": \"555-111-1224\" },{ \"name\": \"Bart\", \"email\": \"bart@simpsons.com\", \"phone\": \"555-222-1234\" }]}";
            response.Write(_strReturn);
            response.End();

        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers05()
        {

            DataTable _dt = new DataTable();
            DataColumn _dc = new DataColumn();
            _dc.ColumnName = "name";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "email";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "phone";
            _dt.Columns.Add(_dc);

            DataRow _dr = _dt.NewRow();
            _dr["name"] = "LisaA";
            _dr["email"] = "lisa@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaB";
            _dr["email"] = "lisa@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            string _strReturn = "";
            int iRowCount = _dt.Rows.Count;

            if (iRowCount == 0)
            {
                _strReturn = "\"\"";
            }
            else
            {
                _strReturn = CommonClass.DataTable2Json(_dt);
            }

            _strReturn = "{\"success\": true,\"total\": " + iRowCount.ToString() + ",\"currpage\":\"1\",\"users\": " + _strReturn + "}";

            HttpResponse response = HttpContext.Current.Response;
            response.Write(_strReturn);
            response.End();

        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers06()
        {

            DataTable _dt = new DataTable();
            DataColumn _dc = new DataColumn();
            _dc.ColumnName = "name";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "email";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "phone";
            _dt.Columns.Add(_dc);

            DataRow _dr = _dt.NewRow();
            _dr["name"] = "LisaA";
            _dr["email"] = "lisaA@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaB";
            _dr["email"] = "lisaB@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaC";
            _dr["email"] = "lisaC@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaD";
            _dr["email"] = "lisaD@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaE";
            _dr["email"] = "lisaE@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            string _strReturn = "";
            int iRowCount = _dt.Rows.Count;

            if (iRowCount == 0)
            {
                _strReturn = "\"\"";
            }
            else
            {
                _strReturn = CommonClass.DataTable2Json(_dt);
            }

            _strReturn = "{\"success\": true,\"total\": " + iRowCount.ToString() + ",\"currpage\":\"1\",\"users\": " + _strReturn + "}";

            HttpResponse response = HttpContext.Current.Response;
            response.Clear();
            response.Buffer = true;
            response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            response.AddHeader("pragma", "no-cache");
            response.AddHeader("cache-control", "");
            response.CacheControl = "no-cache";
            //response.ContentType = "text/plain";
            response.ContentType = "application/json";

            response.Write(_strReturn);
            response.Flush();
            response.End();

        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers07()
        {
            HttpContext context = HttpContext.Current;
            context.Response.Clear();
            context.Response.Buffer = true;
            context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            context.Response.AddHeader("pragma", "no-cache");
            context.Response.AddHeader("cache-control", "");
            context.Response.CacheControl = "no-cache";
            //context.Response.ContentType = "text/plain";
            context.Response.ContentType = "application/json";

            string _page = context.Request.Params["page"].ToString();
            string _start = context.Request.Params["start"].ToString();
            string _limit = context.Request.Params["limit"].ToString();

            DataTable _dt = new DataTable();
            DataColumn _dc = new DataColumn();
            _dc.ColumnName = "name";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "email";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "phone";
            _dt.Columns.Add(_dc);

            DataRow _dr = _dt.NewRow();
            _dr["name"] = "LisaA";
            _dr["email"] = "lisaA@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaB";
            _dr["email"] = "lisaB@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaC";
            _dr["email"] = "lisaC@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaD";
            _dr["email"] = "lisaD@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            _dr = _dt.NewRow();
            _dr["name"] = "LisaE";
            _dr["email"] = "lisaE@simpsons.com";
            _dr["phone"] = "555-111-1224";
            _dt.Rows.Add(_dr);

            string _strReturn = "";
            int iRowCount = _dt.Rows.Count;

            if (iRowCount == 0)
            {
                _strReturn = "\"\"";
            }
            else
            {
                _strReturn = CommonClass.DataTable2Json(_dt, int.Parse(_start), int.Parse(_limit));
            }

            _strReturn = "{\"success\": true,\"total\": " + iRowCount.ToString() + ",\"currpage\":\"1\",\"users\": " + _strReturn + "}";
            context.Response.Write(_strReturn);
            context.Response.Flush();
            context.Response.End();

        }

        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public void GetUsers08()
        {
            HttpContext context = HttpContext.Current;
            context.Response.Clear();
            context.Response.Buffer = true;
            context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            context.Response.AddHeader("pragma", "no-cache");
            context.Response.AddHeader("cache-control", "");
            context.Response.CacheControl = "no-cache";
            //context.Response.ContentType = "text/plain";
            context.Response.ContentType = "application/json";

            string _page = context.Request.Params["page"].ToString();
            string _start = context.Request.Params["start"].ToString();
            string _limit = context.Request.Params["limit"].ToString();
            int _clickCount = 1;
            _clickCount = int.Parse(context.Request.Params["ClickCount"].ToString());

            DataTable _dt = new DataTable();            
            DataColumn _dc = new DataColumn();
            _dc.ColumnName = "name";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "email";
            _dt.Columns.Add(_dc);
            _dc = new DataColumn();
            _dc.ColumnName = "phone";
            _dt.Columns.Add(_dc);
            DataRow _dr = _dt.NewRow();
            if (_clickCount % 2 !=0)
            {                
                _dr["name"] = "LisaA";
                _dr["email"] = "lisaA@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

                _dr = _dt.NewRow();
                _dr["name"] = "LisaB";
                _dr["email"] = "lisaB@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

                _dr = _dt.NewRow();
                _dr["name"] = "LisaC";
                _dr["email"] = "lisaC@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

                _dr = _dt.NewRow();
                _dr["name"] = "LisaD";
                _dr["email"] = "lisaD@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

                _dr = _dt.NewRow();
                _dr["name"] = "LisaE";
                _dr["email"] = "lisaE@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);
            }
            else
            {
                _dr["name"] = "LisaG";
                _dr["email"] = "lisaG@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

                _dr = _dt.NewRow();
                _dr["name"] = "LisaH";
                _dr["email"] = "lisaG@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

                _dr = _dt.NewRow();
                _dr["name"] = "LisaK";
                _dr["email"] = "lisaG@simpsons.com";
                _dr["phone"] = "555-111-1224";
                _dt.Rows.Add(_dr);

            }

            string _strReturn = "";
            int iRowCount = _dt.Rows.Count;

            if (iRowCount == 0)
            {
                _strReturn = "\"\"";
            }
            else
            {
                _strReturn = CommonClass.DataTable2Json(_dt, int.Parse(_start), int.Parse(_limit));
            }

            _strReturn = "{\"success\": true,\"total\": " + iRowCount.ToString() + ",\"currpage\":\"1\",\"users\": " + _strReturn + "}";
            context.Response.Write(_strReturn);
            context.Response.Flush();
            context.Response.End();

        }

                    
    }
}


User.cs的Source:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace POCWBSWebService.WService
{
public class User
{
private string _name;
public string name { get { return _name; } set { _name = value; } }
private string _email;
public string email { get { return _email; } set { _email = value; } }
private string _phone;
public string phone { get { return _phone; } set { _phone = value; } }

public User() { }
public User(string name, string email, string phone)
{
_name = name;
_email = email;
_phone = phone;
}

}
}

CommonClass.cs的Source内容:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;

namespace JQueryAndExtJSDemo.ExtJSPages.WService
{
public class CommonClass
{
public static string DataTable2Json(System.Data.DataTable dt)
{

StringBuilder TB = new StringBuilder();
TB.Append("[");
for (int i = 0; i < dt.Rows.Count; i++)
{
TB.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
TB.Append("\"");
TB.Append(dt.Columns[j].ColumnName);
TB.Append("\":\"");
TB.Append(dt.Rows[i][j].ToString());
TB.Append("\",");
}
TB.Remove(TB.Length - 1, 1);
TB.Append("},");
}
TB.Remove(TB.Length - 1, 1);
TB.Append("]");
return TB.ToString();
}

public static string DataTable2Json(System.Data.DataTable dt, int iStart,int iLimit)
{
int iRowCount = dt.Rows.Count;
int iTotalCalculate = iStart + iLimit;
if (iRowCount < iTotalCalculate)
{
iTotalCalculate = iRowCount;
}

StringBuilder TB = new StringBuilder();
TB.Append("[");
for (int i = iStart; i < iTotalCalculate; i++)
{
TB.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
TB.Append("\"");
TB.Append(dt.Columns[j].ColumnName);
TB.Append("\":\"");
TB.Append(dt.Rows[i][j].ToString());
TB.Append("\",");
}
TB.Remove(TB.Length - 1, 1);
TB.Append("},");
}
TB.Remove(TB.Length - 1, 1);
TB.Append("]");
return TB.ToString();
}

/// <summary>
/// DataTable to json
/// </summary>
/// <param name="jsonName">返回json的名称</param>
/// <param name="dt">转换成json的表</param>
/// <returns></returns>
public static string DataTableToJson(string jsonName, System.Data.DataTable dt)
{
StringBuilder Json = new StringBuilder();
Json.Append("{\"" + jsonName + "\":[");
if (dt.Rows.Count > 0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
Json.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
Json.Append("\"" + dt.Columns[j].ColumnName.ToString() + "\":\"" + dt.Rows[i][j].ToString() + "\"");
if (j < dt.Columns.Count - 1)
{
Json.Append(",");
}
}
Json.Append("}");
if (i < dt.Rows.Count - 1)
{
Json.Append(",");
}
}
}
Json.Append("]}");
return Json.ToString();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息