Как вызвать функцию Javascript с другой страницы? - PullRequest
3 голосов
/ 03 мая 2011

У меня есть 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 ]

2 голосов
/ 03 мая 2011

Попробуйте использовать

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

top относится к самому верхнему window объекту вашей страницы.Если вы находитесь в iframe, например.

Или попробуйте opener, если вы находитесь во всплывающем окне (которое вызывается window.open)

opener.showMsg();
opener.hidePopUpBox();
2 голосов
/ 03 мая 2011

Вам нужно будет включить все функции, которые вам нужны, на каждую страницу, которая будет их использовать ( index.php и messagePost.php , я полагаю).

Обычно это делается путем группировки всех коррелированных функций в файлах .js и последующего включения их с помощью тега <script>.


Кстати, некоторые другие ответы включают, правильно, top и opener. Все предложенные опции заставляют ваш код работать, но в целом я предлагаю вам импортировать функции прямо на те страницы, которые в них нуждаются.

Например, может иметь смысл импортировать функцию hidePopUpBox() прямо во всплывающем окне (которое будет использовать чем), а не в родительском окне.

1 голос
/ 03 мая 2011

Если, как я понимаю, приведенный выше скрипт запускается во всплывающем окне, вы можете получить доступ к сценариям на базовой странице, используя объект открывания.

$(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 голосов
/ 03 мая 2011

нет нет, я вижу, где проблема, я думаю, что проблема с

$(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 голосов
/ 03 мая 2011

Что вы имеете в виду под "на другой странице"? Если они все находятся в index.php, у вас не должно возникнуть проблем с их вызовом. Поскольку я вижу, что вы используете jQuery, я предлагаю вам поставить свою функцию javascript за пределы $ (Document) .ready (function () { });

потому что они должны оставаться снаружи, но я не думаю, что это то, что вы говорите.

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