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 08 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
python 把文件中的每一行以数组的元素放入数组中的方法
Apr 29 Python
python 对key为时间的dict排序方法
Oct 17 Python
Python实现的在特定目录下导入模块功能分析
Feb 11 Python
与Django结合利用模型对上传图片预测的实例详解
Aug 07 Python
Python的对象传递与Copy函数使用详解
Dec 26 Python
解决python使用list()时总是报错的问题
May 05 Python
python小白学习包管理器pip安装
Jun 09 Python
Python 字典一个键对应多个值的方法
Sep 29 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
探讨PHP JSON中文乱码的解决方法详解
2013/06/06 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
php保存任意网络图片到服务器的方法
2015/04/14 PHP
php cli配置文件问题分析
2015/10/15 PHP
PHP附件下载中文名称乱码的解决方法
2015/12/17 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
bootstrap按钮插件(Button)使用方法解析
2017/01/13 Javascript
jQuery实现鼠标移入移出事件切换功能示例
2018/09/06 jQuery
[01:52]深扒TI7聊天轮盘语音出处7
2017/05/11 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[51:32]Optic vs Serenity 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Python 如何访问外围作用域中的变量
2016/09/11 Python
python字符串常用方法
2018/06/14 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python 字典的打印实现
2019/09/26 Python
pygame实现俄罗斯方块游戏(基础篇3)
2019/10/29 Python
Pytorch的mean和std调查实例
2020/01/02 Python
python列表删除和多重循环退出原理详解
2020/03/26 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
HTML5+CSS3网页加载进度条的实现,下载进度条的代码实例
2016/12/30 HTML / CSS
西班牙电子产品购物网站:Electronicamente
2018/07/26 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
中科软测试工程师面试题
2012/06/16 面试题
大学生社会实践自我鉴定
2014/03/24 职场文书
学校党的群众路线教育实践活动对照检查材料
2014/09/24 职场文书
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技