JSONP的小示例

jQueryJSONP的两种实现方式:

都很简单,所以直接上代码!

前台代码如下:

<script type="text/javascript">

    $(function () {
        alert("start...");
        // 第一种方式
        $.ajax({

            type: "get",

            url: "http://localhost:9524/Home/ProcessCallback", // 这个就是不同于当前域的一个URL地址,这里单纯演示,所以同域

            dataType: "jsonp",

            jsonp: "jsonpcallback",  // 指定回调函数,这里名字可以为其他任意你喜欢的,比如callback,不过必须与下一行的GET参数一致

            data: "name=jxq&[email protected]&jsonpcallback=?", // jsonpcallback与上面的jsonp值一致

            success: function (json) {

                alert(json.Name);

                alert(json.Email);
            }
        });
        // 第二种方式
        $.getJSON("http://localhost:9524/Home/ProcessCallback?name=xiaoqiang&[email protected]&jsonpcallback=?",

            function(json) {
                alert(json.Name);
                alert(json.Email);
            }
        );
        alert("end...");
    });

</script>

后台Action代码如下:

public string ProcessCallback(string name, string email)
{
   if (Request.QueryString != null)
   {
       string jsonpCallback = Request.QueryString["jsonpcallback"];
       var user = new User
       {
            Name = name,
            Email = email
       };
       return jsonpCallback + "(" + new JavaScriptSerializer().Serialize(user) + ")";
   }
   return "error";
}

运行后就可以看到结果了。我追踪了下后台ProcessCallback代码,如下图:

可以看到jsonCallback的值为"jQuery17104721....",它是前端传给远程服务器后台Action的。这里jQuery171..表示的是jQuery的版本,可以简单地将这个理解为JSONP类型请求回调函数,jQuery在我们每次指定Ajax请求方式为JSONP时都会生成这么一个JSONP回调函数。虽然jQuery会自动帮我们生成一个回调函数,但是我们也可以通过设置jsonpCallback参数为jsonp请求定制一个我们自己的回调函数。

第一种方式下面这三行代码设定了JSONP请求方式:

dataType: "jsonp",

jsonp: "jsonpcallback",  // 指定回调函数,这里名字可以为其他任意你喜欢的,比如callback,不过必须与下一行的GET参数一致

data: "name=jxq&[email protected]&jsonpcallback=?", // jsonpcallback与上面的jsonp值一致

第二种方式则直接在GET参数后面带上jsonpcallback=?来标识。

我们可以推断这么做以后,jQuery内部机制就帮我们绕过了浏览器的跨域访问限制,然后就可以像正常请求同域Action一样请求跨域Action了。

最后返回的是一个函数表达式:

return jsonCallback + "(" + new JavaScriptSerializer().Serialize(user) + ")";

这样返回给前端的就是类似这种jQuery17104721....(‘{Name:"jxq", Email:"[email protected]"}‘),它一返回到前端就会执行,得到的是一个JavaScript对象,对象有两个属性:Name和Email,所以我们可以直接调用json.Name和json.Email

时间: 2024-09-20 14:24:53

JSONP的小示例的相关文章

PHP jQuery ajax 表单提交小示例(含insert, select)

功能描述:能够通过表单向MySQL数据库新增记录,能够表单提供关键词进行查询 index.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"&g

Hello SAS 1 -- 安装并运行一个小示例

1.安装 软件环境说明 win7 64位 + SAS9.4 准备工作 查看SAS的sid文件有效期,并修改系统时间为有效期之前的1个月,如图示: 修改sid 问题1:SAS EM创建项目报NO_FILE错误(报错时的场景是操作系统是中文,也没有修改系统时间) 解决方式: 1.操作系统语言改成英文版.(试过几次中文版的都失败了,不确定这是主因,因为安装成功时也修改了系统时间,之前失败的时候都没修改系统时间) 2.修改系统时间 2.创建Libraries及table 创建Libraries(软件重启

基于nodeJs express 框架的图片上传和编辑(引用美图编辑工具)上传小示例

唉,由于近期工作中对于新知识的运用相对较少,也导致小码哥少有更新鄙人心得的机会.还望路过的基友们不要抱怨,勿喷,,,,, 本篇文章,是基于NodeJs Express框架完成的一个用于项目中图片上传和编辑上传的小示例,当然,由于项目工期不禁,都是在非工作时间慢慢完成的,导致至今该图片上传功能也未能插入项目中真正的验证最终效果.不过就小码哥感觉,基本思路及基本功能算是完成了. 下面便由小码哥来给基友们稍微讲解改功能的实现过程及其中用到的一些技术等等. 首先,说说NodeJs Express框架的搭

js ajax数据的获取小示例 天气信息填充表格

AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. 现在大家写写了一个简单的ajax获取数据的小示例,希望能帮助需要帮助的. html代码: 1 <table border="1" > 2 <!--因为在谷歌上会自动添加tbody标签,其他浏览器不会有这标签,所以添加tbody是为了选取元素时不会发生混乱.--> 3 <tbody> 4 <tr> 5 <th>日期</th> 6 <th&

Highcharts入门小示例

一.创建条形图 1.创建div容器 <div id="container" style="min-width:800px;height:400px"></div> 2.编写图表配置代码 相关示例: <html> <head>  <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1.8.3.m

Boost笔记--Asio--(1)简单的同步通信小示例

看了一天的Boost.Asio库的资料,现在还是有点迷糊.对于Asio的学习还是要继续,同时在这里也记录下自己入手的第一个小例子.感觉先从小例子入手,然后再去理解那些原理概念啥的,要好一些.因为概念原理都太抽象了,有了小例子就知道是怎么个套路了.对于Asio库的在后面的学习中会陆续的写些文章来记录一些笔记. (注:我不是专业的网络人士,有些东西可能我自己理解的很幼稚,没办法我连tcp/ip协议了解的很少.只能边学边去了解了.) (1)服务器端代码 #include <iostream> #in

Spring 小示例

通过一个简单的示例来初步理解Spring框架 1.创建java工程,导入相应Spring包,放在lib文件夹中 2.接口  IHelloMessage 1 package com.jike.spring.chapter01; 2 3 public interface IHelloMessage { 4 5 //接口中的一个抽象方法,用于向大家输出问候信息 6 public String sayHello(); 7 8 } 3.java类 HelloChina.java,用于输出“中国话” 1 p

Servlet小示例:jsp页面提交信息Servlet接收并打印输出

该示例采用doPost方法提交表单,该示例一共包含两个文件. 一个是用来提交用户信息的表单userForm2.jsp,另一个是用来接收参数的Servlet. userForm2.jsp 1 <%@ page language="java" contentType="text/html;charset=gb2312"%> 2 3 <html> 4 <head><title>用户表单</title></h

java矩阵运算包ujmp中的一些小示例和注意事项

本人最近在用ujmp包写一些程序,ujmp包是针对于超大数据量计算的矩阵的运算包,并且有图形显示的功能且支持多种文件格式的读取和输出,还支持连接数据库,matlab数据类型和weka数据类型,总体来说非常好用,但是有一个很大的缺陷就是基本没有相关的示例和文档,官网上的示例有基本全都过时不能用了,本人总结了一下相关用法,仅供大家参考,代码并不能运行,知识给大家列出了相应的矩阵运算方式和构造方式,希望能对大家有所帮助 LINK 可以用来进行矩阵求逆,矩阵相乘,矩阵的行列选取,大体来说是在矩阵大小变换