在javascript的IF语句中使用PHP

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)