Как отправить и получить объект в нокауте JS на Submit?

У меня есть некоторые поля в форме, я хочу отобразить их в виде сетки на другой странице. Каково будет лучшее решение для этого? Или я могу сделать это как одностраничное приложение? вот мой HTML-код

<html>
<head>
<script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="knockout-3.1.0.js"></script>
    <link rel="stylesheet" type="text/css" href="wireframe.css"/>

</head>
<body>
<div class="wireframe">
<h3 class="table-head">Table Header</h3>
<div id="addbranchdiv" class="span12">
        <span class=span8>
            <button type="button" class=" button branchbtn" id="brancharea">Branch Areas</button>
        </span>
        <span class="span4">
            <a class=" button branchbtn" id="addbranch" href="wireframe3.html" target="_blank">Add Branch Areas</a> 
        </span>
    </div> 
<div class="container" class="span12">


<div class="table-heading grayhead" >
        <div class="field1">
            <label class="row-label">Name</label>
        </div>
        <div class="field2">
            <label class="row-label">Description</label>
        </div>
        <div class="field3">
            <label class="row-label">Template</label>
        </div>
        <div class="field4">
            <label class="row-label">Meta-Keyword</label>
        </div>
        <div class="field5">
            <label class="row-label">Meta-Description</label>
        </div>
        <div class="field6">
            <label class="row-label">Meta-Title</label>
        </div>
        <div class="field7">
            <label class="row-label">Meta-Enable Search</label>
        </div>
        <div class="field8">
            <label class="row-label">Actions</label>
        </div>
</div>
<div data-bind='foreach: formIndex'>
    <div class="table-row white" >
        <div class="">
            <input data-bind="value:name">
        </div>
        <div class="field2">
            <input data-bind="value:description">
        </div>
        <div class="field3">
            <input data-bind="value:template">
        </div>
        <div class="field4">
            <input data-bind="value:metakeyword">
        </div>
        <div class="field5">
            <input data-bind="value:metadescription">
        </div>
        <div class="field6">
            <input data-bind="value:metatitle">
        </div>

          <span><a href='#' data-bind='click: $root.removeField'>Delete</a></span>
    </div>
    </div>
  <button data-bind='click: addField'>Add Field</button>
    <button data-bind='enable: formIndex().length > 0' type='submit'>Submit</button>    
</div>
<div id="save" class="span12">
        <button type="button"  id="savebtn" class="button"  >Save</button> 
    </div>
</div>  

а вот скрипт

<script>
var FormModel = function(formIndex) {
    var self = this;
    self.formIndex = ko.observableArray(formIndex);

    self.addField = function() {
        self.formIndex.push({
            name: "",
            description: "",
            template:"",
            metakeyword:"",
            metadescription:"",
            metatitle:"",
        });
    };

    self.removeField = function(field) {
        self.formIndex.remove(field);
    };

    self.save = function(form) {
        alert("Could now transmit to server: " + ko.utils.stringifyJson(self.formIndex));
        // To actually transmit to server as a regular form post, write this: ko.utils.postJson($("form")[0], self.formIndex);
    };
};

var viewModel = new FormModel([
    { name: "Tall Hat", description: "39.95",template: "12",metakeyword:"meta",metadescription:"",metatitle:"metatitle"},
    { name: "Long Cloak", description: "120.00",template:"12",metakeyword:"meta",metadescription:"",metatitle:"metatitle"},
      { name: "Tall Hat", description: "39.95",template: "12",metakeyword:"meta",metadescription:"",metatitle:"metatitle"},
    { name: "Long Cloak", description: "120.00",template:"12",metakeyword:"meta",metadescription:"",metatitle:"metatitle"}
]);
ko.applyBindings(viewModel);

// Activate jQuery Validation
$("form").validate({ submitHandler: viewModel.save });


</script>

Я хочу отправить объект нажатием кнопки "Отправить" и получить его на другой странице. Как это возможно?

1 ответ

Есть несколько способов сделать это. Самый простой из них - сохранить сетку в том же виде, скрыть форму и показать сетку при нажатии кнопки отправки. Другим способом было бы сохранить информацию, которую вам нужно извлечь, в локальном хранилище (для этого вы можете использовать что-то вроде амплификации js), а затем передать ключ в качестве параметра на другую страницу, извлечь информацию и удалить ключ хранилища, а затем отобразить сетка с соответствующими значениями. Если форма отправляет данные на сервер, сервер может перенаправить на страницу сетки и передать значения (в зависимости от того, как вы отображаете HTML). Надеюсь, это поможет.

Другие вопросы по тегам