• jquery使用jsonp进行跨域调用


    关于JSONP的概念和为什么要使用JSONP网上已经有很多教程,这一节主要演示下在JQUERY中的ajax方法怎样通过JSONP进行远程调用

                     首先介绍下$.ajax的参数

                       type:请求方式 GET/POST

                       url:请求地址

                       async:布尔类型,默认为true 表示请求是否为异步,如果为false表示为同步。

                       dataType:返回的数据类型

                       jsonp:传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)

                       jsonpCallback:自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据

                      success:调用成功执行的函数

                      error:异常处理函数

                

                 1.示例1

                    服务器端我们采用MVC的ACTION来返回数据

                    

    [csharp] view plaincopy

    1. public class HomeController : Controller  
    2.    {  
    3.        //  
    4.        // GET: /Home/  
    5.   
    6.        public ActionResult Index()  
    7.        {  
    8.            return View();  
    9.        }  
    10.   
    11.        public ActionResult ReturnJson()  
    12.        {  
    13.            string callback = Request.QueryString["callback"];  
    14.            string json = "{'name':'张三','age':'20'}";  
    15.            string result = string.Format("{0}({1})", callback, json);  
    16.            return Content(result);  
    17.        }  
    18.   
    19.    }  


                客户端使用jsonp来传输数据

                

    [html] view plaincopy

    1. @{  
    2.     ViewBag.Title = "Index";  
    3.     Layout = "~/Views/Shared/_Layout.cshtml";  
    4. }  
    5.   
    6.    
    7.    
    8.      function SendData()  
    9.      {  
    10.          $.ajax({  
    11.              type: "get",  
    12.              async: false,  
    13.              url: "/home/ReturnJson",  
    14.              dataType: "jsonp",  
    15.              success: function(data){  
    16.                  alert(data.name);  
    17.              },  
    18.              error: function(){  
    19.                  alert('fail');  
    20.              }  
    21.          });  
    22.      }  
    23.   
    24.   
    25.    
    26.   
    27.   
    28.    


                点击提交按钮后,发现服务器端的Request.QueryString["callback"]返回一个随机函数名。这样就被设置成JSONP格式来传递数据了

         2.自定义函数名

             可以在传递过程中自定义函数名,只要使用jsonpCallback参数就可以了。

          jsonp:表示传递的参数,默认为callback,我们也可以自定义,服务器段通过此参数,获取自定义的函数名称,服务器这样获取 Request.QueryString["callback"]

          jsonpCallback表示传递的参数值,也就是回调的函数名称,这是自定义的名称。

                 

    [html] view plaincopy

    1.   
    2.     function SendData() {  
    3.         $.ajax({  
    4.             type: "get",  
    5.             async: false,  
    6.             url: "/home/ReturnJson",  
    7.             dataType: "jsonp",  
    8.             jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)  
    9.             jsonpCallback: "receive",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据  
    10.             success: function (data) {  
    11.                 alert(data.name);  
    12.             },  
    13.             error: function () {  
    14.                 alert('fail');  
    15.             }  
    16.         });  
    17.     }  
    18.   
    19.     function receive(data) {  
    20.         alert(data.age);  
    21.     }  
    22.   

  • 相关阅读:
    c语言基础知识帮助理解(函数递归详解)
    【23-24 秋学期】NNDL 作业8 卷积 导数 反向传播
    基于Xml方式Bean的配置-初始化方法和销毁方法
    redis GEO使用及基本原理——实现对经纬度的操作
    【毕业设计】stm32微信天气机器人 - 物联网 嵌入式 单片机
    技术干货 | 如何用MindSpore优化器加速收敛高度逼近最优值?
    Oracle中系统内置函数(四)
    KV STUDIO的安装与实践(一)
    图片压缩软件大全-免费图片压缩软件排名
    一名优秀的C++人员是怎么炼成的?
  • 原文地址:https://blog.csdn.net/eeeeety6208/article/details/127748615