JavaScript回调函数未调用

时间:2018-10-16 05:03:17

标签: javascript jquery callback

在这里,我试图通过将函数传递给另一个函数来实现回调函数。在下面的示例中,调用df_B.merge(df_A,on='id',how='left').fillna('n/a') id other columns type 0 2232 X n/a 1 1213 Y A 2 1233 I n/a 的onclick按钮的第一个参数textdata具有一些文本格式的数据。 还传递了回调但没有被调用。

invoke_reporting

在新打开的窗口中,我想将textdata值分配给这个新打开的窗口textarea。

这是我的HTML代码:

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;
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

似乎您没有将回调函数传递给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>

DEMO HERE

希望这会有所帮助。

编辑

要在新打开的窗口的文本区域中设置值,请尝试以下代码。

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;
   };
}

我从this SO post那里得到了答案