将JavaScript确认框的结果分配给PHP变量

时间:2010-01-23 07:50:27

标签: php javascript ajax

//this is in php
function msgbox($msg, $type)
    {
    if ($type == "alert")
        {
        // Simple alert window
        ?> <script language="JavaScript"> alert("<? echo $msg; ?>"); </script> <?
        }
    elseif ($type == "confirm")
        {
        // Enter Confirm Code Here and assign the $result variable for use
        // Should include "OK" and "Cancel" buttons.
        ?>
           <script language="JavaScript">
           if (confirm("<? echo $msg; ?>"))
                {
                <? $result == "ok"; ?>
                }
           else
                {
                <? $result == "cancel"; ?>
                }
           </script>
        <?
        }
    }



if ($page_title->exists())

{msgbox("page exists,do you want to delete", "confirm");

}      
 if ($result == "ok")
//code..

问题是$result没有从我认为的确认框中读取值,因为if子句没有被执行,程序流正在没有if子句的情况下进行。

3 个答案:

答案 0 :(得分:2)

您不能以这种方式将服务器端代码(PHP)与客户端代码混合在一起。 要使javascript更改PHP状态,您需要进行HTTP调用(经常使用AJAX)。

您需要阅读PHP教程并确保掌握概念。

答案 1 :(得分:0)

您尝试完成的任务可以使用Ajax创建,只要页面在服务器端创建然后发送给用户,就不能直接篡改 $ result 变量。首先掌握AJAX的参考以及如何使用它。

101 article on Ajax with jQuery (sitepoint.com)

使用jQuery和PHP简单实现AJAX

<强> Client.html

<!--some html...-->
<a class="ajax" href="/delete.php?title=some+title">Delete action link</a>

<script type="text/javascript">
// assuming jQuery has been loaded
$(function () {
    $('a.ajax').click(function () {
        // get link's href, get main url part and query part
        var link = $(this).attr('href');
        var route = link.substring(0, link.lastIndexOf('?'));
        var query = link.substring(link.lastIndexOf('?') + 1);

        // perform ajax call, to the main part of the link, with data
        $.ajax({
            type: "GET",
            url : route,
            data : query,
            success : function (data) {
                if (data === '1') {
                    window.alert('page removed');
                } else {
                    window.alert('error');
                }
            }
        });

        // prevent default behavior
        return false;
    });
});    
</script>

还有一个 delete.php 脚本,它将$ _GET ['title']作为参数

<?php
    $title = $_GET['title'];
    if ($pages->contain($title)) {
        $pages->remove($title);
        echo '1';
    }
?>

请注意,这只是简化,向您展示如何进行简单的AJAX调用

答案 2 :(得分:-1)

您正在使用短标签,请确保它们已从php.ini文件中打开,否则您的代码中将无法执行PHP代码。