在这里,我试图通过将函数传递给另一个函数来实现回调函数。在下面的示例中,调用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;
}
任何帮助将不胜感激。
答案 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>
希望这会有所帮助。
编辑
要在新打开的窗口的文本区域中设置值,请尝试以下代码。
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那里得到了答案