所以我将ASP.NET MVC控制器中的对象列表发送回我的ajax成功响应:
...
success: function (data) {
var predefinedData = data.serialize();
...
当我从浏览器调试时,我看到数据参数正在读取数组,这没关系,但发生以下错误:
未捕获的TypeError:data.serialize不是函数
我已经读过我必须将“vanilla”参数转换为jQuery,所以我做了以下内容:
var makeJqueryArray = $.makeArray(data) //this passes ok
var predefinedData = $.param(makeJqueryArray).serialize(); //but then this reports the same error as before
进一步检查后,我发现$.makeArray(data)
字面上没有做任何事情,因为它与以前完全相同,是一个包含n个元素的数组。
然而,JSON.stringify(data);
可以正常工作,但这是不可能的,因为这给了我一种完全不同于我需要的格式。
那么有人有任何建议吗?
编辑1:
所以这是我收到的数据(从浏览器调试器手表中看到):
data: Array[3]
0:Object
_int:false
avg:false
max:false
min:false
sensorID:5
sum:false
val:true
__proto__: Object
1:Object
2:Object
length:3
__proto__:Array[0]
以下是我想要格式化的方法(值不匹配,因为我使用的是不同的样本,但你明白了这一点):
"SensorID=1&val=false&min=false&avg=false&max=false&sum=false&_int=false&SensorID=2&val=false&min=false&avg=false&max=false&sum=false&_int=false&SensorID=3&val=false&min=false&avg=false&max=false&sum=false&_int=false&SensorID=4&val=true&val=false&min=true&min=false&avg=true&avg=false&max=true&max=false&sum=true&sum=false&_int=true&_int=false&SensorID=5&val=true&val=false&min=true&min=false&avg=true&avg=false&max=true&max=false&sum=true&sum=false&_int=true&_int=false&SensorID=6&val=false&min=false&avg=false&max=false&sum=false&_int=false&SensorID=7&val=false&min=false&avg=false&max=false&sum=false&_int=false&SensorID=9&val=false&min=false&avg=false&max=false&sum=false&_int=false"
答案 0 :(得分:1)
如果您有一个数组并且想要请求参数是其键值对的请求,则可以使用$.param(yourArray);
。
它将返回一个准备好在您的URL中使用的字符串。
例如(取自the jQuery.param page):
var params = { width:1680, height:1050 };
var str = jQuery.param( params ); // str = "width=1680&height=1050"
在你的情况下,这应该是一样的。所以,试试这个:
var makeJqueryArray = $.makeArray(data) //this passes ok
var finalString = $.param(makeJqueryArray); // Should contain the string you want