关联数组作为空字符串传递

时间:2011-09-30 15:43:38

标签: javascript jquery

我试图通过Ajax将数组传递给PHP,但数组作为空字符串传递。这是我创建数组时的代码:

var params = new Array();
var inputs = new Array();
inputs = $(":input");
$.each(inputs, function(key, value) {
  params[value.id] = value.value;
});

alert(params);

在此之前,大约有20个输入看起来像这样:

<input name="first_name" id="first_name" type="text" class="medium"/>
<input name="last_name" id="last_name" type="text" class="medium"/>

alert(params)只给我一个空字符串。但是,alert(params['first_name'])实际上为我提供了first_name输入值。

阵列为什么不通过?

3 个答案:

答案 0 :(得分:1)

你可以尝试一下 -

$(document).ready(function() {
    var params = new Array();
    var inputs = $(":input");

    $.each(inputs, function(key, value) {
        //I guess the problem was that params is array and your id's were strings
        //array's elements are arr[0], arr[1],
        //not like arr[firstname], arr[lastname], ...
        params[value.id] = value.value;  
    });
    alert(params);
});
//moved everything inside $(document).ready

用这个 -

<input name="first_name" id="0" value="1" type="text" class="medium"/>
<input name="last_name" id="1" value="2" type="text" class="medium"/>

<!-- Changed id's from string to numbers. -->

<强>更新

此外,试试这可能有助于您了解最新情况 -

$(document).ready(function() {
    var params = {}; //use object instead of array
    var inputs = $(":input");

    $.each(inputs, function(key, value) {                       
        params[value.id] = value.value;
    });

    for(var prop in params) {
        alert(prop + " = " + params[prop]);
    }
});

注意:params现在不是一个数组。

有了这个 -

<input name="first_name" id="firstname" value="Your first name." type="text" class="medium"/>
<input name="last_name" id="lastname" value="Your last name." type="text" class="medium"/>

答案 1 :(得分:-1)

您不能简单地将变量传递给服务器,您需要将其序列化为name, value对,或使用JSON。

答案 2 :(得分:-1)

我有点不确定你想通过在这样的Javascript中创建数组来实现什么。

您最好的选择可能是使用JQuery命令serialize然后使用$ _GET

获取数据