你如何在javascript函数中使用php

时间:2011-12-12 09:03:25

标签: php javascript ajax function client-side

<html>
    <?php
        $num = 1;
        echo $num;
    ?>
    <input type="button"
           name="lol" 
           value="Click to increment"
           onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {
        <?php
            $num = 2;
            echo $num;
        ?>
        }
    </script>
</html>

这是我到目前为止所做的,虽然没有工作,但我认为我需要使用ajax或其他东西,但我不知道该怎么做。

由于

9 个答案:

答案 0 :(得分:26)

您无法使用Javascript运行PHP代码。当用户收到页面时,服务器将评估并运行所有PHP代码并将其取出。例如,这将起作用:

alert( <?php echo "\"Hello\""; ?> );

因为服务器会对此进行评估:

alert("Hello");

但是,你不能用它在PHP中执行任何操作。

此:

function Inc()
{
<?php
$num = 2;
echo $num;
?>
}

只会对此进行评估:

function Inc()
{
    2
}

如果您不想调用PHP脚本,则必须调用另一个页面,该页面从一组参数中返回一个值。

例如,这将起作用:

的script.php

$num = $_POST["num"];
echo $num * 2;

Javascript(jQuery)(在另一页上):

$.post('script.php', { num: 5 }, function(result) { 
   alert(result); 
});

这应警告10。

祝你好运!

编辑:只需在页面上增加一个数字就可以在jQuery中轻松完成,如下所示:http://jsfiddle.net/puVPc/

答案 1 :(得分:5)

我认为您将服务器代码与客户端代码混淆。

JavaScript在从服务器(如网页)接收数据后在客户端上运行。

PHP在发送数据之前在服务器上运行。

因此,使用php与JavaScript进行交互有两种方式。

如上所述,您可以使用php以与使用php生成HTML相同的方式生成javascript。

或者您可以使用javascript的AJAX请求与服务器进行交互。服务器可以使用数据进行响应,javascript可以接收数据并对其执行操作。

我建议回到基础并研究HTTP如何在服务器 - 客户端关系中工作。然后研究服务器端语言和客户端语言的概念。

然后使用ajax教程,你将开始获得这个概念。

祝你好运,谷歌是你的朋友。

答案 2 :(得分:2)

你在php中使用脚本..

<?php

        $num = 1;
        echo $num;

    echo '<input type="button"
           name="lol" 
           value="Click to increment"
           onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {';
            $num = 2;
            echo $num;

        echo '}
    </script>';
?>

答案 3 :(得分:2)

简单地说,你的问题听起来不对,因为需要回应JavaScript变量。

<?php
        $num = 1;
        echo $num;
        echo "<input type='button' value='Click' onclick='readmore()' />";
   		echo "<script> function readmore() { document.write('";
        $num = 2;
        echo $num;
        echo "'); } </script>";
?>

答案 4 :(得分:1)

在上面给出的代码中

将php值分配给javascript变量。

<html>
<?php
 $num = 1;
 echo $num;
?>
  <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()">
  <br>
  <script>
   var numeric = <?php echo $num; ?>"; //assigns value of the $num to javascript var             numeric 
  function Inc()
   {
     numeric = eVal(numeric) + 1;
     alert("Increamented value: "+numeric);
   }
  </script>
</html>

PHP和Javsacript相结合的一件事是你不能将javascript值赋给PHP值。您可以将PHP值分配给javascript变量。

答案 5 :(得分:1)

有一种方法可以在客户端javascript中运行php(这里不讨论服务器端的js)。不知道这是不是一个好主意,但你可以。正如有些人指出你必须记住,php在服务器上进行评估,然后作为静态内容返回给浏览器,然后浏览器将使用来自服务器的添加数据运行javascript。

你必须告诉服务器将js文件评估为php文件,如果你正在运行apache服务器,你可以使用像这样的htaccess文件来执行此操作:

<FilesMatch "\.js$">
SetHandler application/x-httpd-php
Header set Content-type "application/javascript"
</FilesMatch>

更多信息:

Parse js/css as a PHP file using htaccess

http://css-tricks.com/snippets/htaccess/use-php-inside-javascript/

编辑:在http页面请求时,这个技巧使得带有js扩展名的文件由php编译器解析。 js文件中的所有php部分都将被执行,并且添加了服务器数据的js文件将被传递给浏览器。

但是,OP使用html格式化文件(可能带有php扩展名),没有js文件,因此在这种特定情况下不需要我的建议。

建议的js解决方案是要走的路。如果变量需要存储在服务器上,请使用ajax将其发送到那里。

答案 6 :(得分:0)

尝试这可能有用..

<html>
   <?php $num = 1; ?>
   <div id="Count"><?php echo $num; ?></div>
   <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()">
   <br>
   <script>
   function Inc() {
       i = parseInt(document.getElementById('Count').innerHTML);
       document.getElementById('Count').innerHTML = i+1;
   }
   </script>
</html>

答案 7 :(得分:0)

尽管有一些评论,但在某些情况下,确实需要在Javascript上访问PHP函数(例如AJAX案例)。

在这些情况下,您可以使用mwsX库在Javascript上使用PHP函数。

mwsX库: https://github.com/loureirorg/mwsx

答案 8 :(得分:-2)

只需退回:

<html>
    <?php
        $num = 1;
        echo $num;
    ?>
    <input type="button"
       name="lol" 
       value="Click to increment"
       onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {
            Return <?php
            $num = 2;
            echo $num;
            ?>;
        }
    </script>
</html>