簡體   English   中英

PHP / Javascript將js變量發布到php頁面

[英]PHP/Javascript post js variable to php page

雖然是javascript的新手,但我需要獲取反映用戶在客戶端執行的操作的javascript變量(數組),並在提交時將其發布到PHP服務器頁面。

建議將其作為值添加到表單的隱藏字段中,以發布到php頁面。 但是,由於JS變量是由用戶動態創建的,因此除非調用調用刷新頁面的函數,否則無法寫入頁面以使其包含在表單中。 為了避免刷新頁面,我更希望使用Submit函數同時獲取數據並將其同時發布到php腳本中。 如果我理解正確,則不需要AJAX,因為我可以在提交后重新加載頁面。 我只是不想重新加載兩次。

以下使用安德魯建議的功能來設置js變量和post。 當我獲取表單中的其他隱藏變量時,表單發布了該表單,但是我沒有獲取js設置的變量,這可能是因為變量的命名有誤。

  <html>
     <head>
    <style type="text/css">
        select
        {
            width:100px;
        }
    </style>
    <script type="text/Javascript">
        function moveToRightOrLeft(side)
        {
            if (side == 1)
            {
                var list1 = document.getElementById('selectLeft');
                var list2 = document.getElementById('selectRight');
            }
            else
            {
                var list1 = document.getElementById('selectRight');
                var list2 = document.getElementById('selectLeft');
            }

            if (list1.options.length == 0)
            {
                alert('The list is empty');
                return false;
            }
            else
            {
                var selectedItem = list1.options[list1.selectedIndex];
                move(list2, selectedItem.value, selectedItem.text);
                list1.remove(list1.selectedIndex);
                if (list1.options.length > 0)
                    list1.options[0].selected = true;
            }
            return true;
        }

        function move(listBoxTo, optionValue, optionDisplayText)
        {
            var newOption = document.createElement("option");
            newOption.value = optionValue;
            newOption.text = optionDisplayText;
            listBoxTo.add(newOption, null);
            return true;
        }

        function postData(listBoxID)
        {
            var options = document.getElementById(listBoxID).options;
            for (var i = 0; i < options.length; i++) 
            window.location = "posttoserver.php?data="+options[i].value;

        }

        function setTheValue(val) {
    var options = document.getElementById(listBoxID).options;
    var form = document.forms['myForm'];
    hiddenField = oFormObject.elements["data"];
    hiddenField.value = "val";
}
    </script>
    </head>
    <body>
    <select id="selectLeft" multiple="multiple">
        <option value="1">Value 1</option>
        <option value="2">Value 2</option>
        <option value="3">Value 3</option>
    </select>
    <button onclick="moveToRightOrLeft(2)">&lt;</button>
    <button onclick="moveToRightOrLeft(1)">&gt;</button>
    <select id="selectRight" multiple="multiple">
    </select>
    <form id="myForm" action="getdata.php" method="get">
    <input type="hidden" name="data" />
    <input type="hidden" name="mode" value="savedit">
    <button onclick="setTheValue(options)">Submit Data</button>
</form>
     </body>
     </html>

另一方面,我在getdata.php中:

<?php
$mode = $_REQUEST['mode'];
$option = $_REQUEST['data'];
echo $mode;
echo $option;
print_r ($option);;
?>

幾天后終於用document.getElementById('varname')。value解決了。對於像我這樣的新手來說,document.getElementById不僅會像您想象的那樣檢索數據,而且大多數文檔都提到了這一點。 它還設置數據。

關鍵是向后寫入語句,並且(必須執行檢索值)將id ==放入要設置的元素中。

如果您編寫var test = document.getElementById('text'); 並將id =“ text”放在某個字段中,它將檢索text的值。 這就是通常的文檔所提到的。 但是,如果您寫:

document.getElementById('varname')。value =“ dog”它將在包含id = varname的元素中插入“ dog”。

盡管這對於更有經驗的人可能是顯而易見的,但它的確使我感到困惑。

以下代碼有效。

<html>
<head>
<script>

 function Post(data)
        { 
            document.getElementById('varname').value = data

        }
</script>
</head>
<body>
<form action = "" method="get">
<input id="varname" type="hidden" name="d">
<button onclick="Post('dog')">Post to Server</button>
</form>
</body>
</html>

您可以像平常一樣使用空的隱藏字段創建表單:

<form id="myForm" action="posttoserver.php" method="get">
    <input type="hidden" name="data" />
    ...
    <input type="submit" value="Submit" />
</form>

您可以使用JavaScript函數設置隱藏字段的值:

function setTheValue(val) {
    var form = document.forms['myForm'];
    hiddenField = oFormObject.elements["data"];
    hiddenField.value = "val";
}

然后,您可以在單擊按鈕等時調用函數setTheValue(val)。 我希望這有幫助!

jQuery實際上使這一過程非常簡單。 您有正確的主意,但使用window.location將更改您的頁面。 您要做的是在您停留在當前頁面上的同時,向另一個網址發出異步請求。

http://api.jquery.com/jQuery.ajax/

暫無
暫無

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

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