[英]Associative array passing as empty string
我试图通过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
输入值。
为什么阵列不通过?
你可以试试这个吗?
$(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"/>
您不能简单地将变量传递给服务器,您需要将其序列化为name, value
对或使用JSON。
我不太确定您要通过像这样在Javascript中创建数组来完成什么。
最好的选择是使用JQuery命令进行序列化,然后使用$ _GET获取数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.