我正在尝试使用 Knockout JS 提交表单,因为该数据作为 json 传递。在这里我遇到了问题。以下是我的KO模型。
var permissionRequestModel = {
fromDate: ko.observable(''),
toDate: ko.observable(''),
checkFullDay: ko.observable(false),
fromTimeHH: ko.observable(''),
fromTimeMM: ko.observable(''),
toTimeHH: ko.observable(''),
toTimeMM: ko.observable(''),
permissionTypeOne: ko.observable(''),
permissionTypeTwo: ko.observable(''),
approverList: ko.observableArray([]),
reasonLeave: ko.observable('')
};
现在在这个approverList 中,由一个从检索到的json 对象中获取的数组填充,其填充如下
$(function () {
$.getJSON("http://ec20032432.compute-1.amazonaws.com/api/Request/permission?appid=1&opertype=get_approver_list", function (data) { permissionRequestModel.approverList(data.Approvers); })
});
检索到的 data.Approvers 将采用以下形式:
"Approvers":
[{"ID":"asdasd",
"Display_Name":"Jason asdasd"}]
我需要下拉列表的文本为“Display_Name”,值为“ID”,因此我使用以下标记来执行此操作:
<select name="approverList" id="approverList" data-native-menu="true" class="required" data-bind="options: approverList, optionsCaption: 'Select Your Approver', optionsText: 'Display_Name', optionsValue:'ID'">
</select>
到目前为止它很好,但是现在当我使用以下代码提交表单时,我们作为对象而不是选定的值(即 ID)传递了approverList:
permissionRequestModel.requestPermission = function () {
if ($("#permissionRequestForm").valid()) {
$.ajax({
url: "http://eertretetrer.compute-1.amazonaws.com/api/Request/permission?appid=1&opertype=requestor",
type: "POST",
data: ko.toJSON(permissionRequestModel),
processData:false,
contentType: "application/json",
dataType:"json",
success: function (result) {
alert("Success");
},
error: function (result) {
alert(result.responseText);
}
});
}
else {
}
};
有谁知道为什么会这样?我如何发送值而不是(ID)?