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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
Python实现远程调用MetaSploit的方法
Aug 22 Python
Python代码调试的几种方法总结
Apr 15 Python
Python 的内置字符串方法小结
Mar 15 Python
python类中super()和__init__()的区别
Oct 18 Python
恢复百度云盘本地误删的文件脚本(简单方法)
Oct 21 Python
浅析Git版本控制器使用
Dec 10 Python
Django 路由控制的实现代码
Nov 08 Python
利用python在excel里面直接使用sql函数的方法
Feb 08 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
通过实例了解python__slots__使用方法
Sep 14 Python
python绘制分布折线图的示例
Sep 24 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 魔术方法详解
2014/11/11 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
PDO::getAttribute讲解
2019/01/28 PHP
实例讲解PHP表单验证功能
2019/02/15 PHP
javascript new一个对象的实质
2010/01/07 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
js获取客户端网卡的IP地址、MAC地址
2014/03/26 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
Vue.directive自定义指令的使用详解
2017/03/10 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
js判断文件类型大小并给出提示的实现方法
2018/01/03 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
Python利用BeautifulSoup解析Html的方法示例
2017/07/30 Python
Python批量将图片灰度化的实现代码
2020/04/11 Python
python 实现的车牌识别项目
2021/01/25 Python
CSS 3.0 结合video视频实现的创意开幕效果
2020/06/01 HTML / CSS
护士个人简历自荐信
2013/10/18 职场文书
护理个人求职信范文
2014/01/08 职场文书
先进集体获奖感言
2014/02/13 职场文书
2014年两会学习心得体会
2014/03/10 职场文书
洗车工岗位职责
2014/03/15 职场文书
法人代表任命书范本
2014/06/05 职场文书
企业文化标语大全
2014/06/10 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
导游词之黄果树瀑布
2019/09/20 职场文书
html+css实现文字折叠特效实例
2021/06/02 HTML / CSS
HTML基本元素标签介绍
2022/02/28 HTML / CSS