使用jquery .post()发送所有输入字段

时间:2011-07-21 07:59:07

标签: javascript jquery

我已将所有输入字段的值收集到数组中,如下所示:

 $( ".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中的{}是什么?

3 个答案:

答案 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

有关阵列的更多信息:http://www.w3schools.com/js/js_obj_array.asp