2

PHP と JavaScript を使用していconfirm()ますが、JavaScript で関数を処理するときに問題が発生しました。

add.php ページがあるとします。まず、別のページから渡されたいくつかのパラメーターを受け取り、それらが有効かどうかを確認します。はいの場合は、データを db に挿入して別のページに戻ります。データが有効でない場合は、confirm()ポップアップ ウィンドウが表示され、ユーザーが続行するかどうかを選択できます。ユーザーがまだ続行することを選択した場合は、すべてのパラメーターが再度送信された状態でページをリロードする必要があります。しかし問題は、add.php が 2 回目にロードされたときにパラメーターを取得できないことです。

window.onload以前は、関数とconfirm()ポップアップを使用せず、< a href>代わりにリンクを使用していましたが、すべて正常に機能していました (最後に添付のコードを参照してください)。しかし、次のコードを使用しようとすると、同じ URL が機能しなくなりました

echo "<script type=\"text/javascript\">";
echo "window.onload = function() {
    var v = confirm(\"$name is not alive, do you want to add it into system?\");
    if (v) {
        window.location.href= \"add.php?type=room&amp;name=$name&amp;area\"
            + \"=$area&amp;description=$description&amp;\"
            + \"capacity=$capacity&amp;confirm=Y\";
    } else {
        window.location.href= \"admin.php?area=$area\";
    }
}";
echo "</script>";

以下は以前のバージョンです。使用する代わりにリンクwindow.onload()を使用しました。当時はすべて正常に機能していました。< a href="..." />get_form_var は functions.inc の関数で、$_GET配列を使用してパラメーターを取得します。

<?php
    require_once "functions.inc";
    // Get non-standard form variables
    $name = get_form_var('name', 'string');
    $description = get_form_var('description', 'string');
    $capacity = get_form_var('capacity', 'string');
    $type = get_form_var('type', 'string');
    $confirm = get_form_var('confirm','string');

    $error = '';

    // First of all check that we've got an area or room name
    if (!isset($name) || ($name === ''))
    {
        $error = "empty_name";
        $returl = "admin.php?area=$area" 
                . (!empty($error) ? "&error=$error" : "");
        header("Location: $returl");
    } 

    // we need to do different things depending on if its a room
    // or an area
    elseif ($type == "area")
    {
        $area = mrbsAddArea($name, $error);
        $returl = "admin.php?area=$area" 
                . (!empty($error) ? "&error=$error" : "");
        header("Location: $returl");
    }

    elseif ($type == "room")
    {
        if (isset($confirm)){
            $dca_osi = getOsiVersion($name);
            $room = mrbsAddRoom(
                $name, 
                $area, 
                $error, 
                $description, 
                $capacity,
                $dca_osi,
                1
            );
            $returl = "admin.php?area=$area" 
                    . (!empty($error) ? "&error=$error" : "");
            header("Location:$returl");
        }
        else {
            $dca_status= pingAddress($name);
            $dca_osi = getOsiVersion($name);
            if( $dca_status == 0){ 
                $room = mrbsAddRoom(
                    $name, 
                    $area, 
                    $error, 
                    $description, 
                    $capacity,
                    $dca_osi,
                    0
                );
                $returl = "admin.php?area=$area" 
                        . (!empty($error) ? "&error=$error" : "");
                header("Location:$returl");
            }
            else {
                print_header(
                    $day, 
                    $month, 
                    $year, 
                    $area, 
                    isset($room) ? $room : ""
                );
                echo "<div id=\"del_room_confirm\">\n";
                echo "<p>\n";
                echo "$name is not alive, are you sure to add it into system?";
                echo "\n</p>\n";
                echo "<div id=\"del_room_confirm_links\">\n";
                echo "<a href=\"add.php?type=room&amp;name"
                     . "=$name&amp;area=$area&amp;description"
                     . "=$description&amp;capacity=$capacity&amp;confirm"
                     . "=Y\"><span id=\"del_yes\">" 
                     . get_vocab("YES") . "!</span></a>\n";
                echo "<a href=\"admin.php?area=$area\"><span id=\"del_no\">" 
                     . get_vocab("NO") . "!</span></a>\n";
                echo "</div>\n";
                echo "</div>\n";
            }
        }
    }

    function pingAddress($host)
    {
        $pingresult = exec("/bin/ping -c 1 $host", $outcome, $status);
        if ($status==0) {
            return $status;
        }
        else {
            return 1;
        }
    } 

    function getOsiVersion($host)
    {
        $community = 'public';
        $oid = '.1.3.6.1.4.1.1139.23.1.1.2.4';
        $sysdesc = exec("snmpwalk -v 2c -c $community $host $oid");
        $start = strpos($sysdesc, '"');
        if ($start!==false) {
            $sysdesc = substr($sysdesc, $start+1,$sysdesc.length-1);
            return $sysdesc;
        }
        else {
            return "not available";
        }
    }
4

2 に答える 2

1

「&amp;」の代わりに「&」を使用するだけで、問題を解決しました。URLリンクで...今は正常に動作しています...

于 2013-02-26T01:53:37.050 に答える
0

location.reload() JavaScript 呼び出しを試しますか?

于 2013-02-25T23:25:23.160 に答える