zoukankan      html  css  js  c++  java
  • 使用JSONP 实现跨域通信

     AJAX由于受到浏览器的限制,不允许跨域通信。如果尝试从不同的域请求数据,会出现安全错误。有时我们为了实现跨域通信,不得不做一个中转页面,这样比较繁琐。是不是就没有办法了呢?有的,我们使用JSONP技术就可以解决这个问题。JSONP 具体实现原理这里就不介绍了。下面介绍下在asp.net 中使用JQuery 实现 跨域通信。首先看下代码(以下代码是位于不同域下的)。

    域 A 前端调用页面:

    代码
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>

    <!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 runat="server">
        
    <title>无标题页</title>
        
    <script src="./js/jquery.1.3.2.js" type="text/javascript"></script>
        
    <script type="text/javascript">
        
    function getData()
        {
            
    var url = "http://b.5173.com/Default.aspx";  
            $.ajax({  
                    url:url,  
                    dataType:"jsonp",  
                    success: function(json){  
                                 alert(json.msg);
                              },  
                    error: function(){
                             alert("error");
                             }  
                   })  
        }
        
    </script>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <input type="button" value="跨域调用" onclick="getData();"/>
        
    </form>
    </body>
    </html>

    域 B 后台代码:

    代码
    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    namespace WebApplication2
    {
        
    public partial class _Default : System.Web.UI.Page
        {
            
    protected void Page_Load(object sender, EventArgs e)
            {
                Response.Charset = "utf-8";
                Response.ContentType = "text/javascript";
                

                
    string callback = Request.QueryString["callback"];
                
    string json = "{'state':'0','msg':'hello world!'}";
                
    string result = string.Format("{0}({1})",callback,json);
                
                
                Response.Write(result);
                Response.Flush();
                Response.End();
                
                
            }
        }
    }

    调用结果:

    本文代码下载

  • 相关阅读:
    将字典或者数组转换成JSON数据或者字符串
    [翻译] VICMAImageView
    [翻译] TransitionKit
    [翻译] UIGlossyButton
    [翻译] MMMaterialDesignSpinner
    [翻译] AFSoundManager
    实现UIView的无限旋转动画(非CALayer动画)
    【转】Winform 去掉 最大化 最小化 关闭按钮(不是关闭按钮变灰)终极解决办法
    【转】C# winform 安装程序打包(自定义操作)
    【转】C#安装包(自动卸载低版本)
  • 原文地址:https://www.cnblogs.com/wichell/p/2227630.html
Copyright © 2011-2022 走看看