提交表单输入数组与jQuery阿贾克斯后数组、表单、阿贾克斯后、jQuery

2023-09-10 18:12:43 作者:稀释尼古丁

好吧,我想提交直通jQuery的AJAX的形式。所有的输入是一个数组,它是多维的。

Alright I want to submit a form thru jquery ajax. All the inputs are in an array and it is multidimensional.

它使用数组键作为问题ID的动态表单。 该子项用于在一组问题分组问题。

Its a dynamic form that uses the array key as the question id. The subkey is used for grouping the questions at a question set.

<form name="testing" id="testing" method="post">
    <label>Question 1?</label> 
    <input type="text" name="data[14][1]" id="" class="" value=""><br>
    <label>Question 2?</label> 
    <input type="text" name="data[16][1]" id="" class="" value=""><br>
    <label>Question 1?</label> 
    <input type="text" name="data[14][2]" id="" class="" value=""><br>
    <label>Question 2?</label> 
    <input type="text" name="data[16][2]" id="" class="" value=""><br>
    <label>Question 3?</label> 
    <select name="data[19]" id="" class="">
        <option value="1">1</option>
        <option value="2">2</option>
        <option value="3">3</option>
        <option value="4">4</option>
    </select><br>
    <input type="submit" value="Submit">
</form>

所以这是我的榜样HTML。这是我的例子jQuery的:

So that is my example html. Here is my example jquery:

$("#testing").submit(function() { 
           var data = $('input[name^="data\\["]').serializeArray();
                $.ajax({ 
                 type: "POST",
                 url:  "upload.php",
                 data: {internalform: "submit", data: data},
                 dataType : "text",

           success: function(returndata){
            if(returndata == "no") 
             { return false;
             } else {
               alert("clicked 1 " + returndata);
                }
                 } 
                 });    
            return false;
            }); 

问题是,我得到这个作为返回数组:

Problem is I get this as a return array:

Array
(
    [0] => Array
        (
            [name] => data[14]
            [value] => sd
        )

    [1] => Array
        (
            [name] => data[16]
            [value] => s
        )

)

不过,我想这样的一个数组:

But I want an array like this:

Array ( [14] => ddd [16] => ddd [19] => 4 ) 

我敢肯定它的简单,但我想的东西。我知道为什么它这样做,但我不能得到它,我想要的方式/需要它。有人可以帮忙吗?

Im sure its simple but I'm missing something. I know why its doing it but I can't get it the way I want it/need it. Can someone help?

推荐答案

尝试下面片断中,我没有测试过这一点,但也许它应该工作。

Try below snippet,I have not tested this but probably it should work.

替换 VAR数据= $('输入[名字^ =数据\\ []')serializeArray(); 部分与以下段

var data = {};
$.each($('input[name^="data\\["]')​.serializeArray()​, function() {
    data[this.name] = this.value;
})​;

试试这将解决数据即将在前面的问题

Try this it will solve the data coming in front issues

我已经制定了这一个

var data = {};
$.each($('select[name^="data\\["] , input[name^="data\\["]').serializeArray(), function() {
   var vv = this.name.replace(/data/, '' ).replace(/(\[[0-9]\])$/,'');
   data[vv] = this.value;           
});