如何从另一个页面调用Javascript函数?

时间:2011-05-03 11:41:41

标签: javascript jquery ajax

我有5个javascript函数index.php:

1)showMsg(); //this display 50 latest messages

2)showPopUpBox(); // this I use jquery to load the textbox and send button from typingMsg.php

3)hidePopUpBox(); // this hide pop up box

4)checkNewMsg(); // this will be auto reloaded every 5 sec to check if there is new message, it will show the numbers counts of total new messages.

5)ShowNewMsg(); // this function will be called when the user click the "show new messages" button.

用户在弹出框的文本框中输入消息后,单击“发送”按钮后,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函数?

5 个答案:

答案 0 :(得分:2)

您必须在每个将使用它们的页面中包含您需要的所有功能( index.php messagePost.php ,我猜)。

通常通过将.js个文件中的所有相关函数分组,然后使用<script>标记将其包含在内来完成。


顺便说一下,其他一些答案包括topopener。所有建议的选项都可以使您的代码正常工作,但一般情况下我建议您在需要它们的页面中导入这些函数。

例如,在弹出窗口(将使用比)中导入hidePopUpBox()函数可能是有意义的,而不是在父窗口中导入。

答案 1 :(得分:2)

尝试使用

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

top是指您网页的最顶层window对象。例如,如果您在iframe中。

如果您在弹出窗口中(opener调用),请尝试window.open

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

答案 2 :(得分: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;
});
});

开启者将始终存在于从另一个指向后面的窗口打开的窗口中。

答案 3 :(得分:0)

你对“在另一个页面上”的意思是什么?如果它们都在index.php中你应该没有问题。 因为我看到你正在使用jQuery,我建议你把你的javascript函数放在$(Document).ready(function(){之外 });

因为他们必须待在外面,但我认为这不是你所说的。

答案 4 :(得分: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;
});
}

与同一页面中的其他功能联系 如果我把你弄好了

此致