我正在尝试将数组传递给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;
}
答案 0 :(得分:5)
data = ArrayPush($group);
重新分配data
是一个数组,因此所有的expando属性都没有被字符串化。
在ArrayPush方法中,更改
var arr = new Array();
到
var obj = { };
答案 1 :(得分:2)
arr
声明为ArrayPush
方法中的对象,因为您没有像数组那样使用它。同样在函数内部,您可以使用this.id
和this.value
,而不必创建jQuery
对象。试试这个
function ArrayPush($group) {
var arr = {};
$group.find('input[type=text],textarea').each(function () {
arr[this.id] = this.value;
});
return arr;
}