json跨域调用python的方法详解


Posted in Python onJanuary 11, 2017

本文实例讲述了json跨域调用python的方法。分享给大家供大家参考,具体如下:

客户端:

<!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>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  <title>jQuery-跨域请求</title>
  <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
  <script src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
  </head>
   <script type="text/javascript">
  jQuery(document).ready(function(){
    $.ajax({
      type : "GET",
      url : "http://10.13.38.43:1234/?id=10&callback=?",
      dataType : "jsonp",
      jsonp: 'callback',
      success : function(json){
          alert(json.account);
        //$('#msg_box').html(json);
        //return true;
      }
    });
  });
  </script>
   <body>
  <div id="msg_box"></div>
  </body>
  </html>

服务端

import web
urls=('/','Index',)
class Index:
    def GET(self):
      inputdata=web.input()
      mycallbackfun=inputdata.callback
      #return 'hello' +inputdata.id
      return mycallbackfun+'({"account":"XX","passed":"true","error":"null"})'
app = web.application(urls, globals())
if __name__=='__main__':
    app.run()

附:jquery跨域请求方法简介

这里介绍jQuery跨域请求方法,并提供简单的示例代码供参考。

项目中关于ajax jsonp的使用,出现了问题:可以成功获得请求结果,但没有执行success方法,总算搞定了,记录一下。

function TestAjax()
{
  $.ajax({
    type : "get",
    async : false,
    url : "ajaxHandler.ashx", //实际上访问时产生的地址为: ajax.ashx?callbackfun=jsonpCallback&id=10
    data : {id : 10},
    cache : false, //默认值true
    dataType : "jsonp",
    jsonp: "callbackfun",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
    jsonpCallback:"jsonpCallback",
      //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
      //如果这里自定了jsonp的回调函数,则success函数则不起作用;否则success将起作用
    success : function(json){
      alert(json.message);
    },
    error:function(){
      alert("erroe");
    }
  });
}
function jsonpCallback(data) //回调函数
{
  alert(data.message); //
}
public class ajaxHandler : IHttpHandler
{
  public void ProcessRequest (HttpContext context) {
    context.Response.ContentType = "text/plain";
    string callbackfun = context.Request["callbackfun"];
    context.Response.Write(callbackfun + "({name:\"John\", message:\"hello John\"})");
    context.Response.End();
  }
  public bool IsReusable {get {return false;}
}

ajax请求参数说明:

dataType string 服务器返回的数据类型。
如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。

可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。

注意:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)

"json": 返回 JSON 数据 。
"text": 返回纯文本字符串
"jsonp":jsonp格式。使用jsonp形式调用函数时,访问url时会自动将url后面添加上如"callback=callbackFunName" 以执行回调函数(callbackFunName)。

jsonp string

在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种get或post请求中url参数里的"callback"部分,比如 jsonp:'callbackfun' 则将会生成"callbackfun=?"传给服务器。

jsonpCallback String 此参数为jsonp请求指定一个回调函数名。

这个值将用来取代jQuery自动生成的随机函数名。 即上面"callback=?"中的问号部分。

这主要用来让jQuery生成度独特的函数名,这样请求更容易,也能方便地提供回调函数和错误处理。

也可以在想让浏览器缓存GET请求的时候,指定这个回调函数名。

ajax jsonp与普通的ajax请求的主要区别在于——请求响应结果的处理。如上面代码所示的响应结果为:

jsonpCallback({ name:"world",message:"hello world"});

实际上就是调用jsonp回调函数jsonpCallback,并将要响应的字符串或json传入此方法,关于自定了jsonp的回调函数, success函数则不起作用,大概其底层的实现(当然这是默认的回调函数的时候,否则就不会执行success的方法吧):

function default_jsonpCallback(data)
{
  success(data); //在默认的回调方法中执行
}
Python 相关文章推荐
在Python的框架中为MySQL实现restful接口的教程
Apr 08 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
May 02 Python
Python根据区号生成手机号码的方法
Jul 08 Python
python图书管理系统
Apr 05 Python
Python3 SSH远程连接服务器的方法示例
Dec 29 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
python贪吃蛇游戏代码
Apr 18 Python
Python for循环与range函数的使用详解
Mar 23 Python
Python中asyncio模块的深入讲解
Jun 10 Python
用python画一只可爱的皮卡丘实例
Nov 21 Python
解决pyshp UnicodeDecodeError的问题
Dec 06 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 Python
Python中遇到的小问题及解决方法汇总
Jan 11 #Python
python使用正则表达式匹配字符串开头并打印示例
Jan 11 #Python
SQLite3中文编码 Python的实现
Jan 11 #Python
利用python实现数据分析
Jan 11 #Python
使用python调用zxing库生成二维码图片详解
Jan 10 #Python
利用Python生成文件md5校验值函数的方法
Jan 10 #Python
python中执行shell的两种方法总结
Jan 10 #Python
You might like
PHP新手上路(九)
2006/10/09 PHP
利用PHP制作简单的内容采集器的原理分析
2008/10/01 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
JavaScript Scoping and Hoisting 翻译
2012/07/03 Javascript
Javascript操作cookie的函数代码
2012/10/03 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
Javascript学习笔记之数组的构造函数
2014/11/23 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
js数据类型转换与流程控制操作实例分析
2019/12/18 Javascript
Vue实现简易购物车页面
2020/12/30 Vue.js
[03:44]2014DOTA2国际邀请赛 71专访:DK战队赛前讨论视频遭泄露
2014/07/13 DOTA
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
python采用getopt解析命令行输入参数实例
2014/09/30 Python
介绍Python中内置的itertools模块
2015/04/29 Python
Python运行不显示DOS窗口的解决方法
2018/10/22 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
详解Python图像处理库Pillow常用使用方法
2019/09/02 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
python virtualenv虚拟环境配置与使用教程详解
2020/07/13 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
简历中自我评价分享
2013/10/09 职场文书
工艺员岗位职责
2014/02/11 职场文书
感恩老师演讲稿600字
2014/08/28 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
大学生青年志愿者活动总结
2015/05/06 职场文书
2015年七夕情人节活动方案
2015/05/06 职场文书
centos7安装mysql5.7经验记录
2022/05/02 Servers