Присвоение результата окна подтверждения JavaScript переменной PHP - PullRequest
1 голос
/ 23 января 2010
//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 ]

2 голосов
/ 23 января 2010

Вы не можете смешивать код на стороне сервера (PHP) с кодом на стороне клиента таким образом. Чтобы javascript мог изменить PHP-состояние, вам нужно сделать HTTP-вызов (часто используется AJAX).

Вам необходимо прочитать руководство по PHP и убедиться, что вы поняли концепции.

0 голосов
/ 23 января 2010

То, что вы пытаетесь выполнить, может быть создано с помощью Ajax, поскольку страница создается на стороне сервера и затем отправляется пользователю, вы не можете напрямую вмешиваться в переменную $ result , как вы планировали. Сначала возьмите ссылку на AJAX и как ее использовать.

101 статья об Ajax с jQuery (sitepoint.com)

Простая реализация AJAX с jQuery и PHP

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

0 голосов
/ 23 января 2010

Вы используете короткие теги, убедитесь, что они включены из файла php.ini, иначе код php не будет выполняться в вашем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...