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搜索指定目录的方法
Apr 29 Python
在Linux中通过Python脚本访问mdb数据库的方法
May 06 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
python跳过第一行快速读取文件内容的实例
Jul 12 Python
Python的iOS自动化打包实例代码
Nov 22 Python
python从子线程中获得返回值的方法
Jan 30 Python
python使用pipeline批量读写redis的方法
Feb 18 Python
利用Python半自动化生成Nessus报告的方法
Mar 19 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
详解Django配置JWT认证方式
May 09 Python
如何用Python 加密文件
Sep 10 Python
python 基于opencv去除图片阴影
Jan 26 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
PHP数组实例详解
2016/06/26 PHP
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
js中的string.format函数代码
2020/08/11 Javascript
文本框获得焦点和失去焦点的判断代码
2012/03/18 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
jQuery处理图片加载失败的常用方法
2015/06/08 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
jQuery 调用WebService 实例讲解
2016/06/28 Javascript
通过扫描二维码打开app的实现代码
2016/11/10 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
JavaScript 值类型和引用类型的初次研究(推荐)
2017/07/19 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
node.js微信小程序配置消息推送的实现
2019/02/13 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
js实现单元格拖拽效果
2020/02/10 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
Python变量类型知识点总结
2019/02/18 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
波兰香水和化妆品购物网站:Notino.pl
2017/11/07 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
Mountain Warehouse德国官网:英国户外零售商
2019/08/11 全球购物
店长助理岗位职责
2013/12/13 职场文书
2014全国两会心得体会
2014/03/17 职场文书
新年爱情寄语
2014/04/08 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Python实现列表拼接和去重的三种方式
2021/07/02 Python
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
2022/05/25 SQL Server
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技
js 实现Material UI点击涟漪效果示例
2022/09/23 Javascript