jQuery MiniUI

标题: jQuery MiniUI不支持Python [打印本页]

作者: ender.luk    时间: 2014-6-6 14:20:52     标题: jQuery MiniUI不支持Python

miniui的默认ajax取数据方式是post

python对post方式采取了csrf保护

如果miniui支持get方式那么就可以更好的支持python了

采用$.ajaxSetup({type:"GET" ,global:true})并不能生效。

作者: factory    时间: 2014-6-6 14:26:55

get方式有传输量限制,交互内容多一点很有问题

所以一般类似表格之类的都是post,
而像combobox这类数据量较小的,默认就是get
作者: ender.luk    时间: 2014-6-6 14:54:07

factory 发表于 2014-6-6 14:26
get方式有传输量限制,交互内容多一点很有问题

所以一般类似表格之类的都是post,

如果miniui能支持csrf,那么post方式下也支持python

用的是python3.4+django1.6.5

http://hi.baidu.com/cly84920/item/7da439ce8e27c80c0ad93a81
http://blog.sina.com.cn/s/blog_634bc2230100q7du.html

Django使用ajax POST表单时,为防止CSRF攻击,会验证csrftoken的值是否有效;如果没有在settings中设置csrf中间件及ajax post requestheader中没有指定csrftoken的话,就会return “403”,是无法post请求的,那么就需要我们手动添加。


--------------------------settings:----------------------------------
MIDDLEWARE_CLASSES = (
    'django.middleware.csrf.CsrfMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.csrf.CsrfResponseMiddleware',

----------------------------------------------------------------------

------------------------------JS----------------------------------------------------
function getCookie(sName){var aCookie=document.cookie.split("; ");for(var i=0;i<aCookie.length;i++){var aCrumb=aCookie.split("=");if(sName==aCrumb[0])return   (aCrumb[1]);}return null;}

var myAjax=
new Ajax.Request('http://192.168.1.100/project/update'{method:'POST',setRequestHeader:{"X-CSRFToken":getCookie('csrftoken')},
parameters:'csrfmiddlewaretoken='+getCookie('csrftoken')+"&Fields="+fileds})
作者: factory    时间: 2014-6-6 16:41:05

ender.luk 发表于 2014-6-6 14:54
如果miniui能支持csrf,那么post方式下也支持python

用的是python3.4+django1.6.5

引入miniui之后,
在JS文件内重新写下
mini.ajax = function (options) {
            options.type = "GET";
            options.dataType = ....
            .....
            return window.jQuery.ajax(options);
        }




欢迎光临 jQuery MiniUI (http://miniui.com/discuss/) Powered by Discuz! X2