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('')
};
この承認者リストでは、取得された json オブジェクトから取得された配列によってデータが取り込まれています。次のように取り込まれます。
$(function () {
$.getJSON("http://ec20032432.compute-1.amazonaws.com/api/Request/permission?appid=1&opertype=get_approver_list", function (data) { permissionRequestModel.approverList(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 の代わりに) 値を送信するにはどうすればよいですか?