1. 程式人生 > >ASP.net Joyrock非同步應用示例、JSON-RPC使用方法

ASP.net Joyrock非同步應用示例、JSON-RPC使用方法

使用Joyrock 需要先引用Jayrock.dll,Jayrock.Json.dll兩檔案,另外在web頁面引入json.js檔案(不在同一個地方下載的json.js可用不了),

.net 後臺檔案

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Jayrock.Json;
using Jayrock.JsonRpc;
using Jayrock.JsonRpc.Web;

namespace Exam.Jayrock
{

    public class Handler1 : JsonRpcHandler
    {
        /// <summary>
        /// 未帶引數
        /// </summary>
        /// <returns></returns>
        [JsonRpcMethod("getstring1")]
        public string getstring1()
        {
            return String.Format("Welcome to Jayrock by {0}!",DateTime.Now );
        }
        /// <summary>
        /// 帶引數
        /// </summary>
        /// <param Name="str">The string.</param>
        /// <returns></returns>
        [JsonRpcMethod("getstring2")]
        public string getstring2(string str)
        {
            return String.Format("Welcome to Jayrock by {0}!", str);
        }
        [JsonRpcMethod("addEntity")]
        public int addEntity(JsonObject ent)
        {
            new Entity("demo").addEntity(ent);
            return 1;
        }
        [JsonRpcMethod("updateEntity")]
        public int updateEntity(JsonObject ent) 
        {
            new Entity("demo").updateEntity(ent);
            return 1;
        }
        [JsonRpcMethod("delEntity")]
        public int delEntity(int id)
        {
            new Entity("demo").delEntity(id);
            return 1;
        }
        [JsonRpcMethod("getEntityList")]
        public List<JsonObject> getEntityList(string where)
        {
            return new Entity("demo").getEntityList(where);
        }
    }
}

前臺呼叫頁面
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>demo</title>
    <script src="json.js" type="text/javascript"></script>
    <script type="text/javascript" src="Handler1.ashx?proxy"></script>
    <script>
        var demo = new Handler1();
        
        function syncGetString1()
        {
            alert(demo.getstring1());
        }
        function asyncGetString1()
        {
            demo.getstring1(function (val){
                alert(val.result);
            })
        }
        function syncGetString2()
        {
            var str = "voodooer";
            alert(demo.getstring2(str));
        }
        function asyncGetString2()
        {
            var str = "voodooer";
            demo.getstring2(str,function (val)
            {
                alert(val.result);
            })
            alert("我執行完了:)");
        }
        function addEntity()
        {
            var Entity = Object();
            Entity.Name = "voodoer";
            Entity.Sex = "男";
            var result = demo.addEntity(Entity);
            if (result > 0) { alert("新增實體成功!");}
        }
        function updateEntity()
        {
            var Entity = Object();
            Entity.ID = 1;
            Entity.Name = "voodoer";
            Entity.Sex = "男";
            var result = demo.updateEntity(Entity);
            if (result > 0) { alert("更新實體成功!"); }
        }
        function delEntity()
        {
            
            var result = demo.delEntity(1);
            if (result > 0) { alert("刪除實體成功!"); }
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <p>測試getstring1</p>
        <input type="button" id="btn1"  value="同步呼叫" onclick="syncGetString1()"/>
        <input type="button" id="btn2"  value="非同步呼叫" onclick="asyncGetString1()"/>
        <hr />
        <p>測試getstring2</p>
        <input type="button" id="Button1"  value="同步呼叫" onclick="syncGetString2()"/>
        <input type="button" id="Button2"  value="非同步呼叫" onclick="asyncGetString2()"/>
        <hr />
        <p>測試Entity</p>
        <input type="button" id="Button3"  value="addEntity" onclick="addEntity()"/>
        <input type="button" id="Button4"  value="updateEntity" onclick="updateEntity()"/>
        <input type="button" id="Button5"  value="delEntity" onclick="delEntity()"/>
        <hr />
    </div>
    </form>
</body>
</html>