• JSONP跨域交互请求JSON数据


    JSONP跨域交互请求JSON数据

    <%@ WebHandler Language="C#" Class="jsonp" %>

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

    public class jsonp : IHttpHandler {
        
        
    public void ProcessRequest (HttpContext context) {
            context.Response.ContentType 
    = "text/plain";
            
    string c = context.Request.QueryString["callback"];   //获取url中传进来的callback
            string param = context.Request.QueryString["id"];     //参数
            
            
    //模拟一个json数据,实际中这个数据应该是程序从数据库中取出的。
            string data = "[{\"LineName\":\"line1\",Vote:128},{\"LineName\":\"line5\",Vote:58},{\"LineName\":\"line2\",Vote:28},{\"LineName\":\"line3\",Vote:12},{\"LineName\":\"line4\",Vote:18}]";
            
            
    //为json数据加上callback标头
            data = c + "(" + data + ");";
            
    //输出JSON数据返回给调用
            context.Response.Write(data);
        
        }
     
        
    public bool IsReusable {
            
    get {
                
    return false;
            }
        }

    }


    function SendVote(id) {
        
    var votesArray = [];        //初始化投票结果数组
        var nameArray = [];         //初始化线路名称数组
        var percentageArray = [];   //初始化线路投票占总票数的百分比
        var sumVotes = 0;           //初始化总票数

        
    //url为请求json数据的目标地址,下面的地址为我的本机测试地址,请根据需要修改
        var url = "http://localhost:5573/TravelVoteUI/jsonp.ashx?id=" + id + "&callback=?";


        $.getJSON(url, 
    function(data) {
            $.each(data, 
    function(i) {
                votesArray.push(data[i].votes);
                nameArray.push(data[i].name);
                sumVotes 
    += data[i].votes;
            });

            
    var maxVotes = votesArray.max();
            
    for (var i = 0; i < votesArray.length; i++) {
                percentageArray.push(votesArray[i] 
    / sumVotes);
            }
            
            
    var htmlstr = "";
            
    for (var i = 0; i < percentageArray.length; i++) {
                
    var n = roundNum(percentageArray[i]);
                
    var p = exchange(n);
                
    var id = i + 1;
                htmlstr 
    += '<div class="chartsItem"><div class="lineName">' + nameArray[i] + '</div><div id="charts' + id + '" class="charts charts' + id + '">' + p + '</div><span class="votesNumber" id="votes' + id + '">' + votesArray[i] + '票</span><div class="ietmBottom" ></div></div>';
            }

            
    //在页面中有一个div 的 id为 charts的
            $("#charts").append(htmlstr);
        });
    }

    html
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        
    <title>getJson</title>
        
    <script src="js/jquery.js" type="text/javascript"></script>
        
    <script src="js/votes.js" type="text/javascript"></script>
        
    </head>
    <body>
        
    <div id="charts">
        
        
    </div>

        
    <br />
        
    <hr />
        
    <br />

        
    <ul>
            
    <li>
                
    <img src="http://www.visitbeijing.com.cn/images/content/2008/20081105110304499350.jpg" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【01】
                
    <input type="button" id="1" onclick="SendVote(1)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://www.visitbeijing.com.cn/images/aoylyjpxl/images_03.jpg" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【02】
                
    <input type="button" id="Button2" onclick="SendVote(2)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://www.visitbeijing.com.cn/images/content/2008/20080713162912097791.jpg"  width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【03】
                
    <input type="button" id="Button3" onclick="SendVote(3)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://www.visitbeijing.com.cn/images/content/2008/20080713162912847837.jpg" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【04】
                
    <input type="button" id="Button4" onclick="SendVote(4)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://www.visitbeijing.com.cn/images/content/2008/20080713162912769648.jpg"  width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景请投票。【05】
                
    <input type="button" id="Button5" onclick="SendVote(5)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://home.cnblogs.com/pic/avatar/a33655.jpg" width="44" height="30"  alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【06】
                
    <input type="button" id="Button1" onclick="SendVote(6)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://english.cri.cn/mmsource/images/2010/02/08/16670208tibet.jpg" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【07】
                
    <input type="button" id="Button6" onclick="SendVote(7)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://english.cri.cn/mmsource/images/2010/02/09/16670209rmb1.jpg" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【08】
                
    <input type="button" id="Button7" onclick="SendVote(8)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://english.cri.cn/mmsource/images/2010/02/25/4316toyota.jpg" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点满意,请投票。【09】
                
    <input type="button" id="Button8" onclick="SendVote(9)" value="vote" />
            
    </li>
            
    <li>
                
    <img src="http://img.wanlibo.com/images_cn/newDocin/doc_logo.gif?rand=1228" width="44" height="30" alt="Great Wall" />
                
    <br />如果对本景点票。【10】
                
    <input type="button" id="Button9" onclick="SendVote(10)" value="vote" />
            
    </li>
        
    </ul>

      
    </body>
    </html>

    jquery可以使用$.getJSON() 来进行跨域.


    泛型集合转json

    泛型集合转json


        
    /* 泛型集合转json
         * 需要引入以下两个命名空间
         * using System.Reflection;
         * using System.Text;
         
    */
        
    public static string ObjectToJson<T>(string jsonName, IList<T> IL)
        {
            StringBuilder Json 
    = new StringBuilder();
            Json.Append(
    "{\"" + jsonName + "\":[");
            
    if (IL.Count > 0)
            {
                
    for (int i = 0; i < IL.Count; i++)
                {
                    T obj 
    = Activator.CreateInstance<T>();
                    Type type 
    = obj.GetType();
                    PropertyInfo[] pis 
    = type.GetProperties();
                    Json.Append(
    "{");
                    
    for (int j = 0; j < pis.Length; j++)
                    {
                        Json.Append(
    "\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\"");
                        
    if (j < pis.Length - 1)
                        {
                            Json.Append(
    ",");
                        }
                    }
                    Json.Append(
    "}");
                    
    if (i < IL.Count - 1)
                    {
                        Json.Append(
    ",");
                    }
                }
            }
            Json.Append(
    "]}");
            
    return Json.ToString();
        }
  • 相关阅读:
    一个关于状态机的问题
    8位同步码修改变4位同步码
    BT1120时序,可以用于自测用
    欧几理德,扩展欧几里德和模线性方程组。
    "旋转的风车"----windows(GDI)绘图
    草滩小恪的学习链接(汇总版)
    酒鬼随机漫步(一个矢量类)
    小题精炼-----初试C语言
    大二(上)------我欠青春一份疯狂
    HDU 1027 Ignatius and the Princess II(康托逆展开)
  • 原文地址:https://www.cnblogs.com/didi/p/1677219.html
Copyright © 2020-2023  润新知