jQuery ajax 和表单序列化

$.ajax()是所有 ajax 方法中最底层的方法,所有其他方法都是基于$.ajax()方法的封装。这个方法只有一个参数,传递一个各个功能键值对的对象。

$.ajax() 常见参数

参数类型说明
urlString发送请求的地址
typeString请求方式:POST 或 GET,默认 GET
dataObject 或String发动到服务器的数据,键值对字符串或对象
dataTypeString服务器返回给前台的数据,可指定XML,JSON等
successFunction请求成功后调用的回调函数
errorFunction请求失败时调用的回调函数
traditionalBoolean用传统的方式来序列化发送到服务器的数据,那么就设置为 true

注意:1、服务器返回到前端的数据默认是字符串 ( Django HttpResponse)
                如果想行按照对象处理,需要用jQuery 序列化,JSON.parse(xxx)
               如果不想序列化,需要定义ajax 的dataType 参数 dataType:json
                或者直接用 Django 的 JsonResponse 返回 Json 数据格式 (推荐)

          2、前端发送到服务器的数据  如果键值对中包含数组 ,如data:{a:1,b:[1,2,3,4]}
                django 默认不能处理 ,需要设置 ajax 的traditional 参数: traditional:true

表单序列化

.serialize()

使用表单序列化方法.serialize(),会智能的获取指定表单内的所有元素。这样,在面对大量表单元素时,会把表单元素内容序列化为字符串,然后再使用 Ajax 请求。

<!-- html -->
<body>
    <form>
        <input type="text" name="user"/>
        <input type="text" name="mail"/>
        <input type="radio" value="1" name="gender"> man
        <input type="radio" value="2" name="gender"> women
    </form>
    <button>提交</button>
</body>
// javascript
$('button').click(function(){
    $.ajax({
        type : 'POST',
        url : '/ajax/',
        data : $('form').serialize(),         //序列化表单输入,选择内容
        success : function (response, status, xhr) {
            alert(response);
        }
    });
});

.serialize()方法不但可以序列化表单内的元素,还可以直接获取单选框、复选框和下拉列表框等内容。

$(function(){
    $('button').click(function(){
        var v = $('form').serialize();
        console.log(v)
        console.log(typeof(v))        //返回结果为字符串
    });
});

// 输出结果
// user=2&mail=d&gender=1
// string

.serializeArray()

除了.serialize()方法,还有一个可以返回 JSON 数据的方法:.serializeArray()。这个方法
可以直接把数据整合成键值对的 JSON 对象

$(function(){
    $('button').click(function(){
        var v = $('form input[type=radio]').serializeArray();
        console.log(v)
        console.log(typeof(v))               // 返回结果为Object  --> json 对象
        console.log(v[0].value)              // 获取对应的value       
    });
});

$.ajaxSetup()

有时,我们可能会在同一个程序中多次调用$.ajax()方法。而它们很多参数都相同,这个时候我们课时使用 jQuery 提供的$.ajaxSetup()请求默认值来初始化参数。

$('button').click(function () {
    $.ajaxSetup({
        type: 'POST',
        url: 'test.php',
        data: $('form').serialize()
    });
});

$.param()

在使用 data 属性传递的时候,如果是以对象形式传递键值对,可以使用$.param()方法
将对象转换为字符串键值对格式。

var obj = {a : 1, b : 2, c : 3};
var form = $.param(obj);
alert(form);

注意:使用$.param()将对象形式的键值对转为 URL 地址的字符串键值对,可以更加稳定准确的传递表单内容。因为有时程序对于复杂的序列化解析能力有限,所以直接传递 obj对象要谨慎
 

转载于:https://my.oschina.net/esdn/blog/906279

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值