Как я могу повторить PHP в JQuery? - PullRequest
0 голосов
/ 05 мая 2011

Я пытаюсь использовать одну из моих функций PHP в одной из моих функций jQuery. Я понимаю, что он не будет выполнять код, но мне нужно повторить вызов функции, чтобы сервер мог обработать его. Пока у меня есть это:

    .html('<h2>Please <a href=""<?php echo absolute_url("login.php"); ?>"">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)')

Но это не работает правильно. Я слышал, что мне нужно заключить фактический вызов функции php в Javascript в кавычки, что я и сделал (одинарные и двойные), но они не сработали. Есть идеи?

Вся функция для всех, кто интересуется:

      // login or register notification
$(document).ready(function() {
    $('.notice').click(function() {
        $('.error-notification').remove();
        var $err = $('<div>').addClass('error-notification')
        .html('<h2>Please <a href=""<?php echo absolute_url("login.php"); ?>"">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)')
        .css('left', $(this).position().left);
        $(this).after($err);
        $err.fadeIn(150);
    });
    $('.error-notification').live('click', function() {
        $(this).fadeOut(150, function() {
            $(this).remove();
        });
    });
});

Ответы [ 6 ]

5 голосов
/ 05 мая 2011

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

Почему бы вам просто не сохранить absolute_url ("login.php") в переменной javscript во время загрузки страницы

var loginUrl = "<?php echo absolute_url("login.php"); ?>";

, а затем

.html('<h2>Please <a href="' + loginUrl + '">Login</a>')....

Редактировать - о, подождите, дух - вы делаете это: Извините за касательную, ваш js-файл связан с вашей страницей, это заглушка, указывающая на файл, который нужно включить. Это не регистрирует команды php.

0 голосов
/ 25 июля 2013

Я думаю, что правильным способом использования php из Javascript является создание веб-сервисов (в php) и вызов их из вашего Javascript.Если вы хотите по-настоящему сойти с ума, вы можете отправить php-контент на сервер с помощью веб-службы, записать его как временный файл, затем «потребовать» файл и запустить его ... это совершенно не рекомендуется, еслиСуществует очень уникальный случай использования, который нельзя сделать иначе.PHP, как чрезвычайно динамичный язык, допускает такое использование.

0 голосов
/ 05 мая 2011

ты идешь на php ??? Я думаю, что это невозможно в JS ,,

Лучше всего использовать HTML, его очень эффективно и легко утешить.

.html('<h2>Please <a href="login.php">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)')
0 голосов
/ 05 мая 2011

Вы проверили исходный код страницы результатов?я бы использовал только один "до и после тегов php

0 голосов
/ 05 мая 2011

вы не можете сделать это в вашем js-файле, но вы можете сделать это в теге <script> в HTML-файле.

.html('<h2>Please <a href="<?php echo absolute_url(\"login.php\"); ?>">login</a> 
or <a href="signup.php">register</a> to vote for this post.
</h2>(click on this box to close)')
0 голосов
/ 05 мая 2011

Это на самом деле ничего не даст, как вы отметили в своем вопросе, но попробуйте:

$('elem').html('<h2>Please <a href="<?php echo absolute_url("login.php"); ?>">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)');

Если это происходит со страницы PHP, тогда попробуйте:

$('elem').html('<h2>Please <a href="&lt;?php echo absolute_url("login.php"); ?&gt;">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)');

Очевидно, чтоИнтерпретатор PHP никогда не увидит этого, и код PHP никогда не будет выполнен, как вы уже отметили в своем вопросе.

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