簡體   English   中英

Javascript Confirm()函數無法正確傳遞參數

[英]Javascript confirm() function cannot pass parameters properly

我正在使用PHP和JavaScript,在處理JavaScript中的confirm()函數時遇到問題。

假設我有一個頁面add.php,首先我收到了從另一個頁面傳遞來的一些參數,然后檢查它們是否有效。 如果是的話,我只是將數據插入db並返回到另一頁,如果它們無效,則會彈出一個confirm()窗口,讓用戶選擇是否繼續。 如果用戶仍然選擇繼續,那么我希望重新加載所有發送的參數的頁面。 但是問題是我無法在第二次加載add.php時獲取參數。

以前我沒有使用window.onload函數並彈出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";
        }
    }

我已經解決了這個問題,只需使用“&”而不是“&amp;”即可。 在網址鏈接中...現在可以正常工作了...

您嘗試location.reload()JavaScript調用嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM