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 简单的多线程链接实现代码
Aug 28 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
Nov 20 Python
pip matplotlib报错equired packages can not be built解决
Jan 06 Python
python清除字符串中间空格的实例讲解
May 11 Python
python 多个参数不为空校验方法
Feb 14 Python
Pyqt5自适应布局实例
Dec 13 Python
Python sys模块常用方法解析
Feb 20 Python
4行Python代码生成图像验证码(2种)
Apr 07 Python
Python中lru_cache的使用和实现详解
Jan 25 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
TensorFlow的环境配置与安装方法
Feb 20 Python
浅谈pytorch中的dropout的概率p
May 27 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
开启CURL扩展,让服务器支持PHP curl函数(远程采集)
2011/03/19 PHP
php页面缓存ob系列函数介绍
2012/10/18 PHP
PHP的基本常识小结
2013/07/05 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
PHP使用PDO实现mysql防注入功能详解
2019/12/20 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
防止动态加载JavaScript引起的内存泄漏问题
2009/10/08 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
jquery validate poshytip 自定义样式
2012/11/26 Javascript
js iframe跨域访问(同主域/非同主域)分别深入介绍
2013/01/24 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
Vue.js实现无限加载与分页功能开发
2016/11/03 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
javascript防篡改对象实例详解
2017/04/10 Javascript
用原生JS实现简单的多选框功能
2017/06/12 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
node.js学习笔记之koa框架和简单爬虫练习
2018/12/13 Javascript
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
Python用5行代码写一个自定义简单二维码
2018/10/21 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
欧洲最大的预定车位市场:JustPark
2020/01/06 全球购物
大学军训感言600字
2014/02/25 职场文书
学校安全管理责任书
2014/07/23 职场文书
2015年学生会主席工作总结
2015/04/21 职场文书
公司车队管理制度
2015/08/04 职场文书
初中班主任工作随笔
2015/08/15 职场文书
2015年美容师个人工作总结
2015/10/14 职场文书
2016年情人节广告语
2016/01/28 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android
Python学习之os包使用教程详解
2022/03/21 Python