Javascript 作为空字符串传递的关联数组
我试图通过Ajax将数组传递给PHP,但数组是作为空字符串传递的。这是我创建阵列时的代码: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
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发送的想法。