简体   繁体   English

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

[英]serialize form data and add them to jquery $.post

$('#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);
    });
});

It works fine but because inpuname, inpass, selcanpublic, txtabout are all elements of a form ( forma ) I wonder is it possible to serialize that data and add them to $.post data? 它工作正常,但是因为inpuname, inpass, selcanpublic, txtabout都是表单( forma )的所有元素,所以我想知道是否可以序列化该数据并将其添加到$.post数据中吗?

Something like this: 像这样:

$('#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);
    });
});

$('form').serialize() generates a querystring with values. $('form').serialize()生成带有值的查询字符串。 So when you serialize your form it will send the values as url parameters. 因此,当您序列化表单时,它将把值作为url参数发送。

It would generate as 它会生成为

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

So there is one way you can send 所以有一种发送方式

var formData = $('#forma').serialize()+'&id='+idvalue +'&img='+imgValue;

 $.post('btn-save.php', formData, function(data) {
        console.log(data);
    });

or you can serializeArray() to form. 或者您可以将serializeArray()形成。 It will create key-value pair of form elements. 它将创建表单元素key-value对。

var formData = $('#myForm').serializeArray();
formData.push({name: 'id', value: idValue});
formData.push({name: 'img', value: imgValue});

You can use FormData() object. 您可以使用FormData()对象。 It stores form values. 它存储表单值。

EDIT you can use FormData() only with option processData: false, 编辑您只能将FormData()与选项processData: false,

$('#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);
        }
    });
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM