Функция обратного вызова Javascript не вызывается - PullRequest
0 голосов
/ 16 октября 2018

Здесь я пытаюсь добиться функции обратного вызова, передавая функцию другому. В приведенном ниже примере кнопка onclick вызывает invoke_reporting первый параметр textdata имеет некоторые данные в текстовом формате.Также передавая обратный вызов, но не вызывая.

function invoke_reporting(textdata,callback) {

    window.open("http://192.168.17.109/TestCopy_Report1/templates/ct-scan-head");

    if (callback && typeof(callback) === "function") {

        callback(textdata);
    }
}

function callback(finaldata){
    alertify("callback function");
    document.getElementById("post-data").innerHTML = finaldata;

    window.opener.document.getElementById('post-data').value = finaldata;
}

И в только что открывшемся окне я хочу присвоить значение текстовых данных этому новому открытому текстовому окну.

Вот мой HTML-код:

<form id="report">
      <div class="form-group">
          <label for="post-data">Report Data(Text Format):</label>&nbsp;&nbsp;
           <textarea class="form-control" rows="20" id="post-data" name="post-data"></textarea>
       </div>
   <div class="form-group">
        <div class="col-sm-6"><button type="submit" class="btn btn-primary btn-block" name="launch" id="launch" onclick="invoke_reporting(document.getElementById('post-data').value)">Launch</button>
     </div>
   </div>

</form>

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 16 октября 2018

Кажется, вы не передаете функцию обратного вызова в функцию invoke_reporting

, измените это

<div class="col-sm-6"><button type="submit" class="btn btn-primary btn-block" name="launch" id="launch" onclick="invoke_reporting(document.getElementById('post-data').value)">Launch</button>

на

<div class="col-sm-6"><button type="submit" class="btn btn-primary btn-block" name="launch" id="launch" onclick="invoke_reporting(document.getElementById('post-data').value,callback)">Launch</button>

ДЕМО ЗДЕСЬ

надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Чтобы установить значение в текстовой области недавно открытого окна, попробуйте следующий код.

function invoke_reporting(textdata,callback) {

 var newwindow =    window.open("http://192.168.17.109/TestCopy_Report1/templates/ct-scan-head");

    if (callback && typeof(callback) === "function") {

        callback(textdata,newwindow);
    }
}

function callback(finaldata,newwindow){
    alertify("callback function");
    newwindow.onload = function(){
    newwindow.document.getElementById('post-data').value = finaldata;
   };
}

я получил ответ от этого ТАК сообщения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...