如何从其他页面调用Javascript函数?

3

我有5个JavaScript函数在index.php中:

1)showMsg(); //这个函数显示50条最新消息

2)showPopUpBox(); //我使用jquery从typingMsg.php加载文本框和发送按钮来显示弹出框

3)hidePopUpBox(); //这个函数隐藏弹出框

4)checkNewMsg(); //这个函数将每5秒自动重新加载,以检查是否有新消息,它将显示总新消息数的数字计数。

5)ShowNewMsg(); //当用户点击“显示新消息”按钮时将调用此函数。

用户在弹出框上的文本框中输入消息后,单击“发送”按钮,ajax会调用messagePost.php将消息提交到数据库,如下所示:

$(function() {
$(".button").click(function() {
$.ajax({
             type: "POST",
             url: "messagePost.php",
             data: dataString,
             success: function() {
                 $('textarea.expand25-75').val('');
                 showMsg(); //this is my problem
                 hidePopUpBox(); //this is my problem too
             }
        });
    return false;
});
});

从上面的代码中可以看出,showMsg();和hidePopUpBox()函数无法被调用,因为这些函数不在此页面上。我的问题是如何从不同的页面调用javascript函数?


1
我可以问一下为什么您不将可重用的JavaScript函数放在.js文件中,并在需要使用函数的每个页面中引用它吗?还是这些函数与index.php页面相关的服务器业务? - Marwan
1
如何从不同的页面调用JavaScript函数?什么是不同的页面? - epascarello
该函数在此作用域中可见吗?ajax返回成功了吗?还有一件事是,其他页面是否可以被调用,或者您是否正确地将其添加到当前页面中?例如 <script type="text/javascript" src="pageLocation"></script> - ace
5个回答

2

尝试使用

top.showMsg();
top.hidePopUpBox();

top 指的是页面中最顶层的 window 对象。如果你在一个 iframe 中,那么就会用到它。

如果你在弹出窗口中(通过 window.open 调用),可以尝试使用 opener

opener.showMsg();
opener.hidePopUpBox();

2
你需要在将要使用它们的每个页面(我猜是index.php和messagePost.php)中包含你需要的所有功能。
通常的做法是将所有相关的功能分组在.js文件中,然后使用

1
如果我理解正确,上述脚本在弹出窗口中运行,您可以使用opener对象访问基本页面中的脚本。
$(function() {
$(".button").click(function() {
$.ajax({
             type: "POST",
             url: "messagePost.php",
             data: dataString,
             success: function() {
                 $('textarea.expand25-75').val('');
                 opener.showMsg(); //this is my problem
                 opener.hidePopUpBox(); //this is my problem too
             }
        });
    return false;
});
});

打开器将始终存在于从指向回来的另一个窗口打开的窗口中。


0

不,我可以看到问题出在哪里了。我想问题在于

$(function() {
// You Are Here Not in contact with outside script 
});

我认为这被称为JavaScript闭包或类似的东西,我认为你应该使用它而不是那个。
window.onload=function()
{  
 $(".button").click(function() {
     $.ajax({
             type: "POST",
             url: "messagePost.php",
             data: dataString,
             success: function() {
                 $('textarea.expand25-75').val('');
                 opener.showMsg(); //this is my problem
                 opener.hidePopUpBox(); //this is my problem too
             }
        });
    return false;
});
}

与同一页面中的其他函数保持联系,如果我理解正确

敬礼


0
你说的"on another page"是什么意思?如果它们都在index.php中,那么调用它们不应该有问题。 因为我看到你正在使用jQuery,建议你将JavaScript函数放在$(Document).ready(function(){ });之外。
因为它们必须保持在外面,但我不认为这是你想要表达的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接