序列化表单数据并将它们添加到jquery $ .post

时间:2018-06-18 07:13:40

标签: javascript jquery

$('#btnsave').click(function() {
    var id = $('.nameact').attr('data-id');
    var img = $('#imguser').attr('src');
    var uname = $('#inpuname').val();
    var pass = $('#inpass').val();
    var canpublic = $('#selcanpublic').val();
    var about = $('#txtabout').val();
    $.post('btn-save.php', {id, img, uname, pass, canpublic, about}, function(data) {
        console.log(data);
    });
});

它运行正常,但因为inpuname, inpass, selcanpublic, txtabout是表单的所有元素(forma),我想知道是否可以序列化这些数据并将它们添加到$.post数据中?

这样的事情:

$('#btnsave').click(function() {
    var id = $('.nameact').attr('data-id');
    var img = $('#imguser').attr('src');
    $.post('btn-save.php', {id, img, $('#forma').serialize()}, function(data) {
        console.log(data);
    });
});

2 个答案:

答案 0 :(得分:0)

Fragment生成带有值的查询字符串。因此,当您序列化表单时,它会将值作为url参数发送。

它将生成为

$('form').serialize()

所以有一种方法可以发送

http://example.com?id=value&img=value&uname=value&pass=value&canpublic=value&about=value

或者你可以serializeArray()来形成。它将创建var formData = $('#forma').serialize()+'&id='+idvalue +'&img='+imgValue; $.post('btn-save.php', formData, function(data) { console.log(data); }); 对表单元素。

key-value

答案 1 :(得分:0)

您可以使用The Firebase Docs对象。它存储表单值。

编辑您只能使用processData: false,选项FormData()

$('#btnsave').click(function () {
    var formData = new FormData($('#forma'));
    $.ajax({
        url: 'btn-save.php',
        data: formData,
        type: "POST",
        processData: false,
        success: function(data) {
            console.log(data);
        }
    });
});