在javascript IF语句中使用PHP

时间:2011-12-04 22:23:25

标签: 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>

问题是,即使我单击YES,来自defined()函数的$ confirmation和boolean返回1。 无论我点击什么,(取消或确定)其中一个应该是0(我之前已经宣布$确认) 但是使用if和else块的两个代码! 通常它的工作原理如下

6 个答案:

答案 0 :(得分:13)

你从根本上误解了PHP正在做什么。

在将页面发送到浏览器之前,在服务器上评估PHP。当浏览器看到它并执行javascript时,所有PHP都消失了。

使用您的浏览器&#34;查看来源&#34;在浏览器窗口中包含此代码。你会看到它看起来像这样:

<script type="text/javascript">
var answer = confirm('Are you sure?');

if(answer==true)
   {
             } 
else 
   { 
             }
     alert('1')
     alert('1')
</script>

您需要在浏览器中运行要在javascript中执行的操作,或者需要向服务器发送新请求并使用您的响应获得新页面(直接或间接)。

答案 1 :(得分:10)

这将永远不会起作用,因为在输出发送到浏览器之前,PHP已经处理。如果您确实需要在PHP中修改某些内容,请尝试使用AJAX调用。

http://ajaxpatterns.org/XMLHttpRequest_Call

或者尝试使用jQuery的$.ajax();函数。 Start by looking here

这是一个简单的例子:

<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>

script.php 的内容:

<?php
    if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
        && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'
    ) {
        // AJAX request
        $answer = $_GET['answer'];
        // ...
    }

答案 2 :(得分:4)

如果没有发布/获取请求,则无法触发PHP代码执行。 根据您的需要,您应该选择表单submisssion或在确认时加载查询字符串中填充参数的页面链接。

P.S。 查询字符串参数是“?”后面的参数格式为variable = value

例如:

index.php?answered=1

然后您将能够使用PHP $ _POST,$ _GET或$ _REQUEST变量以这样的方式检索这些可变数值/值:

if ($_REQUEST['answered'] == 1) { //confirmed
...
}

答案 3 :(得分:3)

你误解了这里发生的事情的顺序。

首先,PHP将输出javascript图层。你的if块将如下所示:

if (answer == true)
{
}
else
{
}

javascript引擎应该优化它并完全忽略它。如果您需要让PHP使用javascript层的输入来处理某些内容,请考虑使用AJAX。

答案 4 :(得分:3)

  

通常它会像这样工作

不,它永远不会像这样。 PHP在javascript之前执行,所以它永远不会像这样工作。

我认为从我看到你会想要像

这样的东西
<a href="?confirmation=1" onclick="return confirm('Are you sure?')">Your link</a>

这将转到当前页面,$_GET['confirmation']设置为"1"

答案 5 :(得分:2)

php在javascript之前执行,所以你不能这样做因为 当你通过javascript检查它if else语句php已经执行,所以你不能这样做 但是你可以使用ajax