js跨域

来源:互联网 发布:服务器的8080端口 编辑:程序博客网 时间:2024/05/09 23:23

跨域取数据:

    $.ajax({ type: "get", url:url, dataType: "jsonp", jsonp: "jsoncallback", contentType: "application/json; charset=utf-8", data: { Action: "QueryWscList", pageIndex: "1", pageSize: "10", where: "1=1" },        success: function (data) {            alert(JSON.stringify(data));        }    });

处理程序:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using Newtonsoft.Json;using jxcproject.Business.Model;using jxcproject.Service.Site.Imp;using jxcproject.Service.Tools;using jxcproject.Service.Model;namespace jxcproject.dashengo.Web.Interface{    public partial class WscHandler : System.Web.UI.Page    {        string json = "";        protected void Page_Load(object sender, EventArgs e)        {            Response.Clear();            WebFormHandler.Origin();            string Action=Request["Action"];            switch (Action){                case "QueryWscList":                    QueryWscList();                    break;            }            WebFormHandler.AjaxWrite("(" + json + ")");            Response.End();        }        public void QueryWscList() {            int recordCount = 0;            AjaxResultEntity result = new AjaxResultEntity();            List<WSCOpenWsc> lt = new WSCOpenWscServer().QueryList(Convert.ToInt32(Request["pageIndex"]), Convert.ToInt32(Request["pageSize"]),StringHelper.SqlSafe(Request["where"]), out recordCount);            result.Msg = recordCount.ToString();            result.IsSuccess = true;            result.Data = lt;            json=JsonConvert.SerializeObject(result);        }    }}
辅助类:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.IO;using System.Data;using Newtonsoft.Json;using Newtonsoft.Json.Converters;using System.Collections;namespace jxcproject.Service.Tools{    public class WebFormHandler      {        /// <summary>        /// 上传文件        /// </summary>        /// <returns></returns>        public static ArrayList SaveFiles(string filePath,string newFileName)        {            ///'遍历File表单元素            HttpFileCollection files = HttpContext.Current.Request.Files;            ArrayList list = new ArrayList();            try            {                for (int i = 0; i < files.Count; i++)                {                    ///'检查文件扩展名字                    HttpPostedFile postedFile = files[i];                    string fileExtension=System.IO.Path.GetExtension(postedFile.FileName);                    string fileName = newFileName + fileExtension;                     if (fileName != "")                    {                        ///注意:可能要修改你的文件夹的匿名写入权限。                        postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath(filePath) + fileName);                    }                    list.Add(fileName);                }                list.TrimToSize();                return list;            }            catch (System.Exception ex)            {                throw ex;            }        }               /// <summary>        /// 显示状态        /// </summary>        /// <param name="state"></param>        /// <returns></returns>        public static string StateView(bool state)        {            if (state)                return string.Format("<font color=\"red\">{0}</font>", "√");            else                return "×";        }        ///   <summary>         ///   传入URL返回网页的html代码         ///   </summary>         ///   <param   name="Url">URL</param>         ///   <returns></returns>         public  static string GetUrltoHtml(string Url)        {            string html = "";            Uri uri = new Uri(Url);            System.Net.HttpWebRequest wReq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(uri);            System.Net.HttpWebResponse wResp = (System.Net.HttpWebResponse)wReq.GetResponse();            using (System.IO.Stream respStream = wResp.GetResponseStream())            {                using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("UTF-8")))                {                    html = reader.ReadToEnd();                }            }            return html;        }        /// <summary>        /// 根据文件名和url创建静态文件        /// </summary>        /// <param name="fileName">静态文件名,不带后缀名,后缀名为htm</param>        /// <param name="url">带域名的url</param>        public static void CreateHMTLFile(string fileName,string url)        {            string pathFile = HttpContext.Current.Server.MapPath("~/" + fileName + ".htm");            string html = GetUrltoHtml(url);            if (!File.Exists(pathFile))            {                using (FileStream fs = File.Create(pathFile))                {                    using (StreamWriter sw = new StreamWriter(fs))                    {                        sw.Write(html);                    }                }            }            else            {                using (StreamWriter sw = new StreamWriter(pathFile))                {                    sw.Write(html);                }                            }        }        /// <summary>        /// 将实体类转成Json格式,实体类的属性在对应前台,区分大小写        /// </summary>        /// <param name="o">任何定义的实体类</param>        /// <returns>json字符串</returns>        public static string ModelConvertJson(Object o)        {            IsoDateTimeConverter datetimeConvert = new IsoDateTimeConverter();            datetimeConvert.DateTimeFormat = "yyyy-MM-dd";            string json = JsonConvert.SerializeObject(o,Formatting.Indented,datetimeConvert);            return json;        }        /// <summary>        /// 将Datatabel转成json格式        /// </summary>        /// <param name="dt">DataTabel对象</param>        /// <param name="tableName">Table名称</param>        /// <returns>json字符串</returns>        public static string CreateJsonParameters(DataTable dt,string tableName,string dateFormat)        {            StringBuilder sb = new StringBuilder();            StringWriter sw = new StringWriter(sb);            using (JsonWriter jw = new JsonTextWriter(sw))            {                JsonSerializer ser = new JsonSerializer();                IsoDateTimeConverter datetimeConvert = new IsoDateTimeConverter();                datetimeConvert.DateTimeFormat = dateFormat;                ser.Converters.Add(datetimeConvert);                jw.Formatting = Formatting.Indented;                jw.WriteStartObject();                jw.WritePropertyName(tableName);                jw.WriteStartArray();                                foreach (DataRow dr in dt.Rows)                {                    jw.WriteStartObject();                    foreach (DataColumn dc in dt.Columns)                    {                                                //将列名转成小写的原因是因为在Ext Template中Id不被Exj识别                        jw.WritePropertyName(dc.ColumnName.ToLower());                        //此处dr[dc]不能加toString(),因为这样日期就不能转成想要的格式                        ser.Serialize(jw, dr[dc]);                    }                    jw.WriteEndObject();                }                jw.WriteEndArray();                jw.WriteEndObject();                sw.Close();                jw.Close();            }            return sb.ToString();        }        public static string CreateJsonParameters(DataTable dt, string tableName)        {            StringBuilder sb = new StringBuilder();            StringWriter sw = new StringWriter(sb);            using (JsonWriter jw = new JsonTextWriter(sw))            {                JsonSerializer ser = new JsonSerializer();                IsoDateTimeConverter datetimeConvert = new IsoDateTimeConverter();                datetimeConvert.DateTimeFormat = "yyyy-MM-dd";                ser.Converters.Add(datetimeConvert);                jw.Formatting = Formatting.Indented;                jw.WriteStartObject();                jw.WritePropertyName(tableName);                jw.WriteStartArray();                foreach (DataRow dr in dt.Rows)                {                    jw.WriteStartObject();                    foreach (DataColumn dc in dt.Columns)                    {                        //将列名转成小写的原因是因为在Ext Template中Id不被Exj识别                        jw.WritePropertyName(dc.ColumnName.ToLower());                        //此处dr[dc]不能加toString(),因为这样日期就不能转成想要的格式                        ser.Serialize(jw, dr[dc]);                    }                    jw.WriteEndObject();                }                jw.WriteEndArray();                jw.WriteEndObject();                sw.Close();                jw.Close();            }            return sb.ToString();        }        /// <summary>        /// 将dataTable转成XML格式        /// </summary>        /// <param name="dt">DataTabel对象</param>        /// <returns>xml字符串</returns>        public static string CreateXMLParameters(DataTable dt)        {            StringBuilder xmlstring = new StringBuilder();            xmlstring.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");            xmlstring.Append("<"+dt.TableName+">");            for (int i=0;i<dt.Rows.Count;i++)            {                                xmlstring.Append("<rows>");                for (int j = 0; j < dt.Columns.Count; j++)                {                    xmlstring.Append("<"+dt.Columns[j].ColumnName+">");                    xmlstring.Append("<![CDATA["+dt.Rows[i][j].ToString()+"]]>");                    xmlstring.Append("</"+dt.Columns[j].ColumnName+">");                }                xmlstring.Append("</rows>");            }            xmlstring.Append("</"+dt.TableName+">");            return xmlstring.ToString();        }        /// <summary>        /// 支持跨域请求        /// </summary>        /// <param name="context"></param>        public static void Origin()        {            string callBackName = HttpContext.Current.Request.Params["jsoncallback"] == null ? "" : HttpContext.Current.Request.Params["jsoncallback"].ToString();            if (string.IsNullOrEmpty(callBackName))     //此参数如果为空,则表示客户端使用的不是jsonp方式的ajax请求            {                HttpContext.Current.Response.ClearHeaders();                string origin = HttpContext.Current.Request.Headers["Origin"];                HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", string.IsNullOrEmpty(origin) ? "*" : origin);                string requestHeaders = HttpContext.Current.Request.Headers["Access-Control-Request-Headers"];                HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Headers", string.IsNullOrEmpty(requestHeaders) ? "*" : requestHeaders);                HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Methods", "POST, OPTIONS");            }        }        /// <summary>        /// ajax请求返回数据        /// </summary>        /// <param name="jsonData"></param>        public static void AjaxWrite(string jsonData)        {            HttpContext.Current.Response.ContentType = "application/json;charset=utf-8";            string callBackName = string.Empty;            callBackName = HttpContext.Current.Request.Params["jsoncallback"] == null ? "" : HttpContext.Current.Request.Params["jsoncallback"].ToString();            if (!string.IsNullOrEmpty(callBackName))         //此参数如果为空,则表示客户端使用的不是jsonp方式的ajax请求            {                HttpContext.Current.Response.Write(callBackName + "("+jsonData+")");            }            else            {                HttpContext.Current.Response.Write(jsonData);            }        }    }}


0 0
原创粉丝点击