使用ajax去請求調用ashx的接口


首先要明白這個是前台去請求后台的接口,把前台的參數傳給后台,然后后台給前台一個或多個返回結果。

1.后台的代碼如下:

  /// <summary>
    /// GetInfomationDetail 的摘要說明
    /// </summary>
    public class GetInfomationDetail : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            DB_Infomation db_info = new DB_Infomation();

            Dictionary<String, Object> dicParameter = GetParameter(context);
            Hashtable ht = new Hashtable();
            string infoid = dicParameter["infoid"].ToString();

            context.Response.ContentType = "text/plain";

            context.Request.ContentEncoding = Encoding.GetEncoding("UTF-8");

            context.Response.ContentEncoding = Encoding.GetEncoding("UTF-8");

            context.Response.Charset = "UTF-8";
            int allcount =db_info.PublishListCount(infoid);
            ht.Add("allcount", allcount);
            DataView dView = db_info.getInfoDetail(infoid);

            if (dView.Count > 0)
            {
                string title = dView[0]["title"].ToString();
                string secondtitle = dView[0]["secondtitle"].ToString();
                string infolock = dView[0]["InfoLock"].ToString(); //信息是否鎖住
                ht.Add("title", title);
                ht.Add("secondtitle", secondtitle);
                ht.Add("infolock", infolock);
            }


            context.Response.ContentType = "text/plain";
            //context.Response.Write("Hello World");

            context.Response.Write(CreateJsonParams(ht));
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        private Dictionary<String, Object> GetParameter(HttpContext context)
        {
            StreamReader reader = new StreamReader(context.Request.InputStream);
            //得到json字符串:strJson={"key3":"xdp-gacl","key4":"白虎神皇"}
            String strJson = HttpUtility.UrlDecode(reader.ReadToEnd());
            JavaScriptSerializer jss = new JavaScriptSerializer();
            //將json字符串反序列化成一個Dictionary對象
            Dictionary<String, Object> dicParameter = jss.Deserialize<Dictionary<String, Object>>(strJson);
            return dicParameter;
        }

        public string CreateJsonParams(Hashtable items)
        {
            string returnStr = "";
            foreach (DictionaryEntry item in items)
            {
                returnStr += "" + item.Key.ToString() + ":\"" + item.Value.ToString() + "\",";
            }
            return "{" + returnStr.Substring(0, returnStr.Length - 1) + "}";

        }


    }

  2.前台代碼如下:注意,這個是一個js方法,可以在初始化的時候調用此方法。其中的async,為false,可以保證當這個頁面在初始化調用多個接口的時候,鎖住當前的接口,避免接口錯亂,導致接口返回error,但是這個接口已經執行完成。

function BindInfo(){
        var infoid = document.getElementById("infoid").innerHTML;
        var requestData = "{'infoid': \"" + infoid + "\"}";
        var prexUrl = "/hkjy/";
         $.ajax({
            type: "POST",
            cache: false,
            async: false, 
              url: prexUrl + "SmtpService/HkmhWebService/GetInfomationDetail.ashx",
            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
            data:requestData,
            success: function (data) {
                    var data = eval("(" + data + ")");
                     var title = data.title;
                     var secondtitle = data.secondtitle;
                     var infolock = data.infolock;
                    var allcount = data.allcount;
                     if(infolock=="0"){
                         infolock = "【進行中】";
                     }
                     else{
                         infolock="【已結束】";
                     }
                     document.getElementById("infoTitle").innerHTML=title;
                     document.getElementById("infoSecondTitle").innerHTML=secondtitle;
                     document.getElementById("infoStatus").innerHTML=infolock;
                     document.getElementById("spanCount").innerHTML=allcount;
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {//請求錯誤 時執行的方法 
                // alert("error!" + errorThrown);
                    alert("網絡異常");
            }

        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM