我有一个看似......的javascript对象。
filter = {
lastchanged: 5,
Location: {
Country: 5,
Province: 3
}
}
我正在进行ajax调用...
jQuery.ajax({ url: search_url, data: filter, dataType: "html" })
我希望对象属性如此序列化......
/my-controller?lastchanged=5&Location.Country=5&Location.Province=3
但是他们目前正在序列化为......
/my-controller?lastchanged=5&Location%5BCountry%5D=5&Location%5BProvince%5D=3
不能使用MVC绑定。
是否有正确的方法告诉jQuery以第一种方式对参数进行编码,就像它是常规表单提交一样?
答案 0 :(得分:0)
我不知道官方/ jQuery方式来获得您需要的精确格式,但您可以使用一些String Replace All操作自己完成。
演示:
function ReplaceAll(str, search, replacement) {
return str.split(search).join(replacement);
};
function FormatForAjaxGET(obj) {
var result = $.param(obj);
result = ReplaceAll(result, "%5B", ".");
result = ReplaceAll(result, "%5D=", "=");
return result;
}
var filter = {
lastchanged: 5,
Location: {
Country: 5,
Province: 3
}
};
console.log(FormatForAjaxGET(filter));
// And to make the call, do
// jQuery.ajax({ url: search_url + "?" + FormatForAjaxGET(filter), dataType: "html" });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>