sar*_*ata 3 javascript php if-statement
我正在尝试制作一个确认框,它将需要执行哪些PHP代码.继承我的代码:
<script type="text/javascript">
var answer = confirm('Are you sure?');
if(answer==true)
{
<?php $confirmation = 1; ?>
}
else
{
<?php define("CONFIRMATION", 1, true); ?>
}
alert('<?php echo $confirmation; ?>')
alert('<?php echo defined("CONFIRMATION"); ?>')
</script>
Run Code Online (Sandbox Code Playgroud)
问题是,即使我点击是,$ confirm和来自defined()函数的布尔值返回1.无论我点击什么,(取消或确定)其中一个应该是0(我之前已经声明过$ confirm)但两者都是使用if和else块的代码!通常它的工作原理如下
Fra*_*ila 14
您从根本上误解了PHP正在做什么.
在将页面发送到浏览器之前,在服务器上评估PHP.当浏览器看到它并执行javascript时,所有PHP都消失了.
在浏览器窗口中使用浏览器的"查看源代码",其中包含此代码.你会看到它看起来像这样:
<script type="text/javascript">
var answer = confirm('Are you sure?');
if(answer==true)
{
}
else
{
}
alert('1')
alert('1')
</script>
Run Code Online (Sandbox Code Playgroud)
您需要在浏览器中运行要在javascript中执行的操作,或者需要向服务器发送新请求并使用您的响应获得新页面(直接或间接).
Yes*_*rry 10
这将永远不会起作用,因为在将输出发送到浏览器之前处理PHP .如果您确实需要在PHP中修改某些内容,请尝试使用AJAX调用.
http://ajaxpatterns.org/XMLHttpRequest_Call
或者尝试使用jQuery的$.ajax();功能.从这里开始.
这是一个简单的例子:
<script type="text/javascript">
var answer = confirm('Are you sure?');
$.ajax({
type: 'GET',
url: '/path/to/script.php',
data: 'answer=' + answer,
success: function(response) {
alert(response);
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
script.php的内容:
<?php
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH'])
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
) {
// AJAX request
$answer = $_GET['answer'];
// ...
}
Run Code Online (Sandbox Code Playgroud)