Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 序列化表单数据并将其添加到jquery$.post_Javascript_Jquery - Fatal编程技术网

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

Javascript 序列化表单数据并将其添加到jquery$.post,javascript,jquery,Javascript,Jquery,它工作正常,但因为inpuname、inpass、selcanpublic、txtabout都是表单的元素(forma),我想知道是否可以序列化该数据并将其添加到$。post数据 大概是这样的: $('#btnsave').click(function() { var id = $('.nameact').attr('data-id'); var img = $('#imguser').attr('src'); var uname = $('#inpuname').val

它工作正常,但因为
inpuname、inpass、selcanpublic、txtabout
都是表单的元素(
forma
),我想知道是否可以序列化该数据并将其添加到
$。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);
    });
});
$('form')。serialize()
生成一个包含值的查询字符串。因此,当您序列化表单时,它会将值作为url参数发送

它将产生

$('#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);
    });
});
所以有一种方法你可以发送

http://example.com?id=value&img=value&uname=value&pass=value&canpublic=value&about=value
或者你也可以自己去形成。它将创建
键值
对表单元素

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

 $.post('btn-save.php', formData, function(data) {
        console.log(data);
    });
您可以使用对象。它存储表单值

编辑您只能与选项一起使用
processData:false,

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

您的第二个示例根本无效<代码>序列化()生成查询字符串。虽然可以将其附加到通过jQuery发送的对象中,但需要对服务器端代码进行大量修改,而这并不是您真正想要做的。我猜您需要类似的东西,在序列化字符串中附加其他参数。IE9或更低版本不支持FormData对象。我假设这不是OP的问题。有点不对劲-我得到了
意外的令牌
errorthreaded-
$.post('btn-save.php',{id,img,formData},函数(数据){…
-获取-
未捕获的类型错误:对此进行非法调用line@puerto,是的,我的回答不好。编辑过的回答。@KrzysztofJaniszewski,在这种情况下,没有
代码行减少
效果-太遗憾了
$('#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);
        }
    });
});