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

Javascript 作为空字符串传递的关联数组,javascript,jquery,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="fi

我试图通过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"/>

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


为什么数组没有通过?

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

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

您最好使用JQuery命令,然后使用$\u GET

获取数据。您能试试这个吗-

$(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. -->
<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"/>
注意:params现在是一个对象而不是数组

用这个-

<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. -->
<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"/>


那么它在PHP中也是一个空字符串吗?在AJAX调用之前是否序列化为JSON?我们真的需要查看AJAX调用和PHP来了解发生了什么,因为
Array
s只获取数字索引。如果需要“关联数组”,请使用对象。注意:如果您想用JSON对其进行序列化,这一点也适用。这不是确切的答案,但如果您想通过ajax发送表单,请查看jQuery.serialize()@Felix只是在扮演魔鬼代言人的角色,但这不是他正在做的吗?它不起作用的唯一原因是他没有正确地访问它们。@sdleihssirhc:不,如果您为数组指定字符串属性,大多数数组操作都会忽略它们。例如将数组转换为字符串(使用
alert
)或使用
JSON.stringify
将其转换为JSON。当你有非数值属性时,你必须使用对象,而不是数组(以防万一:是的,我知道数组也是对象)。我稍后会这样做,这是为了表明数组在javascripti中是空的。我需要使用字符串作为键names@luqita:你查过第二个了吗?谢谢,这不完全是我想要的,但给了我用JSON发送的想法。