简体   繁体   English

通过jQuery AJAX传递表单数组数据

[英]Passing form array data through jQuery AJAX

I have a form that allows you to add multiple listings at one time. 我有一个表格,可让您一次添加多个列表。

I also have to pass through an md5check. 我还必须通过md5check。

IE) IE)

<select name="master_id"></select>

<select name="id2[]"></select>
<select name="id3[]"></select>
<input name="text[]"></input>
<input name="text2[]"></text>
<input name="text3[]"></text>
<input name="check[]" type="checkbox"></input>

<select name="id2[]"></select>
<select name="id3[]"></select>
<input name="text[]"></input>
<input name="text2[]"></text>
<input name="text3[]"></text>
<input name="check[]" type="checkbox"></input>

<select name="id2[]"></select>
<select name="id3[]"></select>
<input name="text[]"></input>
<input name="text2[]"></text>
<input name="text3[]"></text>
<input name="check[]" type="checkbox"></input>

jQuery.ajax({
    type: "POST",
    url: ipb.vars['base_url'] + "app=main&module=ajax&section=upload&do=upload",
    data: {
        'md5check': ipb.vars['secure_hash'],
    }
    }).done(function() {
    alert( "Data Saved:");
    });

I want to pass in the master ID and the arrays through AJAX so that they then can be $_REQUEST'ed in PHP. 我想通过AJAX传递主ID和数组,以便可以在PHP中使用$ _REQUEST进行存储。 The 'md5check' must be there. “ md5check” 必须存在。

data can also take a string so, you can used 数据也可以使用字符串,因此,您可以使用

jQuery.ajax({
  type: "POST",
  url: ipb.vars['base_url'] + "app=main&module=ajax&section=upload&do=upload",
  data: $('input[name="username[]"],input[name="password[]"],input[name="rawtext[]"]').serialize()
    + '&md5check='+ipb.vars['secure_hash'],
}).done(function() {
  alert( "Data Saved:");
});

HTML Form: HTML表单:

<form action="" method="POST" id="myform">
    <input name="username[]">
    <input name="password[]">
    <input name="rawtext[]">
    <input name="username[]">
    <input name="password[]">
    <input name="rawtext[]">
    <input name="username[]">
    <input name="password[]">
    <input name="rawtext[]">
   <input name="submit" type="submit" value="submit">
</form>

jQuery: jQuery的:

$('#myform').submit(function(event) {
     event.preventDefault();
     //comment this line out
     alert($(this).serialize());
     $.post(ipb.vars['base_url'] + "app=main&module=ajax&section=upload&do=upload&", { 
     $(this).serialize() })
    .done(function(data) {
    alert("Data Loaded: " + data);
  });
 return false;
});

You can use the following. 您可以使用以下内容。

$('#myform').submit(function(e) {
    e.preventDefault();
    e.stopPropagation();

    var formData = $(this).serializeObject();
    var postData = $.extend({}, formData, {
        app: main,
        module: ajax,
        section: upload,
        do: upload
    });

    $.post(ipb.vars['base_url'], postData,
        function(data) {
            alert(data);
        }
    );
});

$.fn.serializeObject = function() {
    var objectData = {};
    var serializeArr = this.serializeArray();

    $.each(serializeArr, function() {
        if(objectData[this.name] !== undefined) {
            if(!objectData[this.name].push) {
                objectData[this.name] = [objectData[this.name]];
            }

            objectData[this.name].push($.trim(this.value) || '');
        } else {
            objectData[this.name] = $.trim(this.value) || '';
        }
    });

    return objectData;
};

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

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