我怎么能在PHP中对话回答是或否,根据答案做php代码?

时间:2014-01-26 14:47:36

标签: javascript php html

我想我怎么能得到一个对话框,似乎我需要使用javascript但这不让我跟进PHP代码取决于答案,除非有办法吗?

<?php


$ime = "Marko";

echo <<< EOT
<SCRIPT language="JavaScript">

var hi= confirm("Do you really want to deactivate $ime?");
if (hi== true){
    <?php ?>
    alert("$ime Deactivated!");
    // I need to do php code here...
}else{
    alert("Skipping $ime");
    // I need to do php code here...
}


</SCRIPT>


EOT;

?>

5 个答案:

答案 0 :(得分:1)

PHP是一种服务器端脚本语言。你不能用JavaScript触发它。

答案 1 :(得分:1)

改进@ papirtiger的答案,您可以使用AJAX无缝地传递PHP代码而无需重新加载页面。

所有AJAX都是你可以将数据从javascript传递到PHP文件的方式。因为PHP是服务器端,所以需要执行的任何PHP脚本都必须在服务器上。 PHP生成脚本并将其发送到客户端,并在生成的页面下载时完成客户端和服务器之间的连接。 Javascript可以继续其工作,因为它是客户端。但由于它位于客户端的计算机上,因此无法在其中运行PHP脚本,因为它无法解释。 AJAX从PHP获取数据并像Form一样发送(使用POST或GET变量),在服务器上执行单独的PHP文件,从脚本中获取响应并将其放入javascript而不重新加载整个页面。

以下是您的脚本的样子。

<script>
    if (window.confirm("Are you sure?")){
        // Begin the AJAX function
        $.ajax({
            // Declare the type (GET or POST)
            type = "POST",
            // The local server location to the PHP script to get the response from
            url = "yes.php",
            // Data to send (in this case nothing needs to be sent)
            data = "",
            // Get the response if a script is executed successfully
            success: function(response) {
                // Display the response from the script in an alert box
                alert(response);
            }
        )};
    } else {
        // Rinse and repeat using another file
        $.ajax({
            type = "POST",
            url = "no.php",
            data = "",
            success: function(response) {
                alert(response);
            }
        )};
    }
</script>

你还需要在HTML的头部包含jQuery库,否则这个AJAX markdown将无法工作,你将不得不导致传统的(和丑陋的/混乱的)纯JavaScript AJAX执行。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

希望这有帮助! :)

答案 2 :(得分:0)

@StashCat的回答是完全正确的,但是你要找的模式是这样的:

<script>
if (window.confirm("Are you sure")){
    window.location("/yes.php");
} else {
    window.location("/no.php");
}
</script>

请注意,正在运行的脚本将一直运行,直到退出。 然后向用户呈现网页和确认框。当他们点击是或否时,他们将被重定向并且将运行一个新脚本。

答案 3 :(得分:0)

简而言之,它不是一个很好的语言混合解决方案。根据你的代码,我可以使用像<?php <script> var some = "123"; </script> ?>这样的php来声明一个全局变量,然后在客户端javascript代码中使用它,但我会重复它的错误方法。你最好重构你的代码。

答案 4 :(得分:0)

Php代码在Server上运行,而javascript代码在客户端(即您的浏览器)上运行。因此,您无法编写代码来在服务器端显示对话框,但您可以使用Ajax动态删除和添加HTML元素。您可以在javascript中编写对话框并调用Ajax块。 Ajax(Ajax - &gt; Async Javascript)代码的典型示例

    <!DOCTYPE html>
    <html>
    <head>
    <script>
    function loadXMLDoc()
    {
    var xmlhttp;
    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange=function()
    {
     if (xmlhttp.readyState==4 && xmlhttp.status==200)
     {
     document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
     }
    }
    xmlhttp.open("GET","ajax_info.txt",true);
    xmlhttp.send();
    }
    </script>
    </head>
    <body>

    <div id="myDiv"><h2>Let AJAX change this text</h2></div>
    <button type="button" onclick="loadXMLDoc()">Change Content</button>

    </body>
    </html>