asp.net Вызов новичков Async в библиотеку JS перед отправкой

Я использую Knockoutjs в старом asp.net webapplication. У меня есть требование, чтобы на asp.net отправить кнопку нажмите, я должен вызывать как JS-библиотеку async и получить ответ, а затем отправить asp.net submit (т.е. инициировать событие нажатия кнопки asp.net)?

Есть ли способ в Knockoutjs ждать ответа от Async-вызова, а затем отправить? проблема у меня есть, так как asp.net синхронизируется, и я, когда я делаю асинхронный вызов в библиотеке JS, форма отправляется даже до того, как я получаю ответ от библиотеки JS.

self.onButtonClick = function () {

    var jsdatatosubmit = {
        param1: '123',
        param2: '123qwewe'
    };
    object.functionTest(jsdatatosubmit)
    .success(

        function (response) {

            return true; //Submit asp.net form Call submit click event
        }   
    )
    .error();

    return false; //instead of true         

};

jquery,asp.net,knockout.js,

0

Ответов: 1


0

Ваш вопрос состоит из двух частей.

  1. запретить отправку формы при нажатии кнопки.
  2. отправить синхронный запрос

Код, который у вас уже есть, должен быть достаточным для удовлетворения 1 (возврат false). Вам не нужно возвращать истину внутри обратного вызова успеха (на самом деле этого никогда не произойдет, так как обратный вызов onButtonClick не будет ждать вызова асинхронного вызова перед возвратом). Что касается 2, вы можете использовать ko.utils.postJson или множество других библиотек, способных к синхронным сообщениям.

Вот блог создателя нокаута, который имеет несколько примеров. Вот jsfiddle, который я сделал, который показывает простой пример, используя его.

<form method="POST">
  <input type="text" data-bind="textInput: someProperty">
  <button type="submit" data-bind="click: submit">submit</button>
</form>

var viewModel = {
  someProperty: ko.observable('some text'),
  submit: function(e) {
    ko.utils.postJson('/controller/action', { nameOfActionMethodArgument: this.someProperty });
    return false;
  }
};

ko.applyBindings(viewModel, document.querySelector('form'));
JQuery, asp.net, knockout.js,
Похожие вопросы