我已将所有输入字段的值收集到数组中,如下所示:
$( ".formbox" ) . each( function(id,elem){
form_fields[ "input-" + $( elem ) . attr( "id" ) ] = $( elem ) . val( );
});
$.log( "Collected:", form_fields );
这确实有效,然后我尝试使用post
传递数组 $.post(
"server.php",
{
fields: form_fields
},
function(ret) {
if (!ret.success )
alert ( "Error! Reload please!" );
else
{
}
},
'json'
);
然而,在检索时,Firebug指示字段为空
据我所知,我需要序列化数组或根本不使用它。但是我可以用什么呢?
请说出我做错了什么?
----------补充说---------- ......我刚发现了这个
form_fields = {};
:)
我不明白如何解决问题 请告诉我Array和{}之间有什么区别? JS中的{}是什么?
答案 0 :(得分:2)
我只能推荐JQuery form plugin。它处理所有这些混乱,甚至支持透明文件上传模式。 (因为通常你不能使用AJAX上传文件。)
答案 1 :(得分:2)
尝试:
var fields = {};
$('.formbox input').each(function(){
var $this = $(this);
fields['input-' + $this.attr('name')] = $this.val();
});
$.log( "Collected:", fields );
$.post("server.php", fields, function(ret) {
if (!ret.success)
alert ( "Error! Reload please!" );
else{
}
}, 'json');
form_fields = {};
表示将空对象分配给form_fields
。 {}
用于表示对象,而[]
用于表示数组。
答案 2 :(得分:2)
{}
用于创建对象,[]
用于表示索引。区别在于。
示例代码:
var obj = {name:"Captain",last_name:"Caveman",run:function(speed){//run;}}
//equivalent to
var obj = new Object();
obj.name = "Captain";
obj.last_name = "caveman";
obj.run = function(speed){
//run;
}
我刚刚使用{}
动态创建了一个新对象,请按照以下代码调用其成员
document.write(obj.name);
document.write(obj.run("fast"));
但是数组比对象更简单。
JSON: Javascript对象表示法
有关JSON的更多信息:http://www.w3schools.com/js/js_objects.asp