我正在使用$("#formid").serialize()
返回一个字符串,我需要在进行ajax调用之前用不同的值覆盖此字符串中的一个值。
我应该使用serializeArray()
吗?如果是这样,我如何在更新数组值后得到一个字符串?
答案 0 :(得分:1)
如果这是条件覆盖,则可以使用隐藏字段。根据条件,将覆盖值或实际值存储在隐藏字段中。然后在服务器端,查看隐藏字段的值,而不是用户可见的输入字段。
或者,您可以在序列化之前更改字段的值,然后在调用jQuery.ajax
后将其还原。
第一个选项对我来说似乎更清晰。
<强>更新强>
如果您不想更改视图模型,则选项2是最简单的方法。还有其他方法:
使用正则表达式替换值:serializedString.replace(/FieldName=[^&]+/, "FieldName=" + overridingValue);
拆分字符串并检查每个属性。这更费时,更冗长,但你可以确定你正在覆盖正确的领域:
var nameValuePairs = serializedString.split(/&/);
var newSerializedString = "";
for(var i = 0; i < nameValuePairs.length; i++) {
var namveValuePair = nameValuePairs[i];
var entry = nameValuePair.split(/=/);
var key = entry[0];
if(key == "FieldName") {
entry = "FieldName=" + overridingValue;
}
newSerializedString += entry + "&";
}
newSerializedString = newSerializedString.replaced(/&$/, "");
IMO,这似乎很多工作,所以我仍然选择2!