将数组传递给json.stringify

我正在尝试将数组传递给json.stringify,但返回的值将返回空。

JSON.stringify({ json: data }) // returns `{"json":[]}` 

这里将是数据的内容:

 data[from] = "bfleming@test.com" data[to] = "test@test.com" data[message] = "testmessage" 

jQuery的:

 function SubmitUserInformation($group) { var data = {}; data = ArrayPush($group); $.ajax({ type: "POST", url: "http://www.mlaglobal.com/components/handlers/FormRequestHandler.aspx/EmailFormRequestHandler", data: JSON.stringify({ json: data }), dataType: 'json', contentType: "application/json; charset=utf-8", cache: false, success: function (msg) { if (msg) { $('emailForm-content').hide(); $('emailForm-thankyou').show(); } }, error: function (msg) { form.data("validator").invalidate(msg); } }); } function ArrayPush($group) { var arr = new Array(); $group.find('input[type=text],textarea').each(function () { arr[$(this).attr('id')] = $(this).val(); }); return arr; } 

 data = ArrayPush($group); 

data重新分配为数组,因此所有expando属性都不会被字符串化。

在您的ArrayPush方法中,更改

 var arr = new Array(); 

 var obj = { }; 

应该将arr声明为ArrayPush方法中的对象,因为您没有像数组一样使用它。 在函数内部,你可以使用this.idthis.value你不必创建jQuery对象。 试试这个

 function ArrayPush($group) { var arr = {}; $group.find('input[type=text],textarea').each(function () { arr[this.id] = this.value; }); return arr; }