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中几个比较常见的名词解释
Jul 04 Python
Python中的字符串类型基本知识学习教程
Feb 04 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
python实现烟花小程序
Jan 30 Python
python实现H2O中的随机森林算法介绍及其项目实战
Aug 29 Python
Python实现对adb命令封装
Mar 06 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
pytorch判断是否cuda 判断变量类型方式
Jun 23 Python
利用Python实现朋友圈中的九宫格图片效果
Sep 03 Python
基于python实现复制文件并重命名
Sep 16 Python
Django中ORM的基本使用教程
Dec 22 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的变量总结 新手推荐
2011/04/18 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
php array_merge函数使用需要注意的一个问题
2015/03/30 PHP
PHP中常见的缓存技术实例分析
2015/09/23 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
JS延迟加载(setTimeout) JS最后加载
2010/07/15 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
js学使用setTimeout实现轮循动画
2017/07/17 Javascript
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
JavaScript实现全选取消效果
2017/12/14 Javascript
详解VueJs中的V-bind指令
2018/05/03 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
js回文数的4种判断方法示例
2019/06/04 Javascript
js实现一个简易计算器
2020/03/30 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
vue下的@change事件的实现
2019/10/25 Javascript
深入解析Python中的urllib2模块
2015/11/13 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
Python执行时间的计算方法小结
2017/03/17 Python
Python中int()函数的用法浅析
2017/10/17 Python
Python实现感知机(PLA)算法
2017/12/20 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
Python numpy.array()生成相同元素数组的示例
2018/11/12 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
一家专门经营包包的英国网站:MyBag
2019/09/08 全球购物
高校生生产实习自我鉴定
2013/09/21 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
个人社会实践自我鉴定
2014/03/24 职场文书
机关干部四风问题自我剖析及整改措施
2014/10/26 职场文书
卖房协议书样本
2014/10/30 职场文书
2014年幼师工作总结
2014/11/22 职场文书
2016年父亲节寄语
2015/12/04 职场文书
nginx搭建NFS网络文件系统
2022/04/14 Servers