js 跨域访问问题

18 篇文章 0 订阅

 js 跨域访问时,必须要加上 callback=? . callback 也可以用其它名子代替。

不过所调用的服务里。反回的 json 结果里必须在前面加上 callback 。和在 js 里定义的一致。

如: bool ok = ms.InputOffSetDateToDB(System.Convert.ToByte(maptype), lng, lat, offset_lng, offset_lat);
                string jsons = SerializeJsonString(ok);
                string cb = context.Request["callback"];
                context.Response.Write(cb + "(" + jsons + ")");

具体访求如下:

 

       var url = "http://123.65.217.16/WcfMapServer/AddOffSetToDb.ashx?maptype=1&lng=" + lastLng + "&lat=" + lastLat + "&offset_lng=" + xoff + "&offset_lat=" + yoff + "&callback=?";
                            $.getJSON(
                url,
                { "spot_id": 4401 },
                function (json) {
                    try {
                        alert(json.status);
                    }
                    catch (e) {
                        var a = "";
                        var b = "";
                    }
                }
            );

 

AddOffSetToDb.ashx 里的反回结果的方法。

 

    public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //  public bool InputOffSetDateToDB(byte mapType, decimal lng, decimal lat, decimal offset_lng, decimal offset_lat)

            try
            {
                string maptype = (context.Request["maptype"] == null ? "" :
                context.Request["maptype"]);

                if (string.IsNullOrWhiteSpace(maptype)) return;

                decimal lng = (context.Request["lng"] == null ? 0 :
                   System.Convert.ToDecimal(context.Request["lng"]));

                decimal lat = (context.Request["lat"] == null ? 0 :
                  System.Convert.ToDecimal(context.Request["lat"]));

                if (lng == 0 || lat == 0) return;


                decimal offset_lng = (context.Request["offset_lng"] == null ? 0 :
                 System.Convert.ToDecimal(context.Request["offset_lng"]));

                decimal offset_lat = (context.Request["offset_lat"] == null ? 0 :
                  System.Convert.ToDecimal(context.Request["offset_lat"]));

                MapServer ms = new MapServer();
                bool ok = ms.InputOffSetDateToDB(System.Convert.ToByte(maptype), lng, lat, offset_lng, offset_lat);
                string jsons = SerializeJsonString(ok);
                string cb = context.Request["callback"];
                context.Response.Write(cb + "(" + jsons + ")");
                           }
            catch
            {
                return;
            }

        }

 

 


        public string SerializeJsonString(object obj)
        {
            MemoryStream ms = new MemoryStream();
            DataContractJsonSerializer ser = new DataContractJsonSerializer(obj.GetType());
            ser.WriteObject(ms, obj);
            byte[] json = ms.ToArray();
            ms.Close();
            string jsonString = Encoding.UTF8.GetString(json, 0, json.Length);
            return jsonString;
        }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值