[英]Javascript form serialization for JSON
我正在嘗試將表單序列化為JSON對象,以便可以通過AJAX發送數據。 我正在使用以下功能:
$.fn.serializeObject = function() {
var arrayData, objectData;
arrayData = this.serializeArray();
objectData = {};
$.each(arrayData, function() {
var value;
if (this.value != null && this.value != '') {
value = this.value;
} else {
value = null;
}
if (objectData[this.name] != null) {
if (!objectData[this.name].push) {
objectData[this.name] = [ objectData[this.name] ];
}
objectData[this.name].push(value);
} else {
objectData[this.name] = value;
}
});
return objectData;
};
問題是我的序列化沒有考慮循環數據結構。 例如我有我的表格
<form:input path="discipline.cnfpDisciplineCode" class="required" />
這被序列化為
{
...
discipline.cnfpDisciplineCode : someValue
...
}
是否有一個優雅的解決方案來序列化表格以使其看起來像
{
...
discipline :
{
cnfpDisciplineCode : someValue
}
...
}
還是我必須自己實現整個解析算法?
謝謝。
不知道我是否知道您要做什么,這是在這種情況下我會使用的東西。
首先,您可以構建一個函數來創建對象,然后使用jQuery.ajax將其發送到服務器。
$.ajax({
url: "servletAdress",
type: "POST",
accepts: "application/json",
data: {obj: JSON.stringify(object) }, //it can be an array
dataType: "json",
beforeSend: function(x) {
if (x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
}
}
});
在paramether'obj'尋址的servlet中,您將以字符串形式接收JSON。
您可能想使用com.google.gson在servlet中解析它
或者只是簡單地將表單提交給servlet。
我認為沒有現成的功能可以將abc等路徑轉換為嵌套對象。 以下線程介紹了有關路徑設置和獲取問題的幾種解決方案:
當您已經在使用Spring時(由於使用了標簽庫,至少看起來像是在使用它),如果您要這樣做,則可以自動將輸入參數轉換為對象。 這個想法是在服務器端有一個代表某種狀態的對象,您可以像往常一樣將其解析為一種形式,而Spring自己處理從輸入參數到POJO的反向轉換。 在這種情況下,請查看一些有關Springs @ModelAttribute批注的示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.