<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或其他东西,但我不知道该怎么做。
由于
答案 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函数。
答案 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>