Вызов функции PHP в Javascript - PullRequest
5 голосов
/ 13 ноября 2010

Я хочу знать, возможно ли вызывать функцию php в javascript, только и только когда условие истинно. Например

<script type="text/javascript">
if (foo==bar)
{
phpFunction(); call the php function
}
</script>

Есть ли способ сделать это .. Если так, дайте мне знать. Спасибо

Ответы [ 5 ]

4 голосов
/ 13 ноября 2010

PHP на стороне сервера, а Javascript - клиент, так что на самом деле это не так (да, я знаю, что есть JS на стороне сервера). Что вы могли бы сделать, это использовать Ajax и вызвать страницу PHP, чтобы получить некоторые результаты.

2 голосов
/ 13 ноября 2010

Функция PHP не может быть вызвана так, как вы иллюстрировали выше. Однако вы можете вызвать PHP-скрипт, используя AJAX, код, как показано ниже. Также вы можете найти простой пример здесь . Дайте мне знать, если вам нужны дальнейшие разъяснения

Использование Jquery

<script type="text/javascript" src="./jquery-1.4.2.js"></script>
<script type="text/javascript">
function compute() {
    var params="session=123";
    $.post('myphpscript.php',params,function(data){ 
            alert(data);//for testing if data is being fetched
            var myObject = eval('(' + data + ')');
            document.getElementById("result").value=myObject(addend_1,addend_2);
        }); 
}
</script>

Альтернатива Barebones Javascript

   <script type="text/javascript">

    function compute() {
        var params="session=123"
        var xmlHttp; 
        var addend_1=document.getElementById("par_1").value;
        var addend_2=document.getElementById("par_2").value;

        try 
        { 
            xmlHttp = new XMLHttpRequest(); 
        } 
        catch (e) 
        { 
            try 
            { 
                xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
            } 
            catch (e) 
            { 
                try 
                { 
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
                } 
                catch (e) 
                { 
                    alert("No Ajax for YOU!"); 
                    return false; 
                } 
            } 
        } 
        xmlHttp.onreadystatechange = function() 
        { 
            if (xmlHttp.readyState == 4) { 
                ret_value=xmlHttp.responseText;
                var myObject = eval('(' + ret_value + ')');
                document.getElementById("result").value=myObject(addend_1,addend_2);
            }
        }       
        xmlHttp.open("POST", "http://yoururl/getjs.php", true);
        xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlHttp.setRequestHeader("Content-length", params.length);
        xmlHttp.setRequestHeader("Connection", "close");
        xmlHttp.send(params);
    }
    </script>
2 голосов
/ 13 ноября 2010

Нет, это невозможно. PHP-код работает до (на стороне сервера) javascript (на стороне клиента)

1 голос
/ 13 ноября 2010

Остальные ответы имеют право.

Однако есть библиотека XAJAX , которая помогает имитировать вызов функции PHP из JavaScript с использованием AJAX и специально разработанной библиотеки PHP.

Это немного сложно, и было бы намного легче научиться использовать $ .get и $ .post в jQuery, так как они лучше разработаны и проще, и как только вы разберетесь, как они работают, вы выиграете ». Не нужно напрямую вызывать PHP из JavaScript.

0 голосов
/ 13 ноября 2010

PHP всегда запускается до загрузки страницы. JavaScript всегда запускается после загрузки страницы. Они никогда не бегают в тандеме.

Наиболее близким решением является использование AJAX или перенаправления браузера для вызова другого файла .php с сервера.

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