js跨域
2015-08-26 15:34
686 查看
跨域取数据:
处理程序:
$.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); } } } }
相关文章推荐
- 使用纯js写的一个分页
- JSTL自定义函数标签
- 201508261524_《JavaScript之浮点数算数运算》
- (2)如何在Javascript中自定义类 & 面向对象编程 (封装)
- js根据类名获取元素——自定义getElementsByClass()
- JS文档生成工具:JSDoc 介绍
- JSON介绍
- 《Servlet与JSP核心编程第二版》阅读记录002-第一个servlet示例程序
- javaScript hook
- Json解析方式
- 浅谈JavaScript中的变量、参数、作用域和作用域链
- Java抓取网页数据(原网页+Javascript返回数据)
- ajax异步提交json字符串参数
- json_decode时含有中文是解码问题(json_decode返回为null)
- JS 读取XML设置级联菜单
- JavaScript数组的3种循环方式效率的比较
- Jsoup获取HTML响应并进行传值操作
- 《JavaScript启示录》摘抄
- json2form实例
- js+css实现的圆角边框TAB选项卡滑动门代码分享(2款)