簡體   English   中英

PHP獲取提交按鈕的價值

[英]PHP get value of submit button

試圖讓PHP返回按鈕的值。 不知道出了什么問題,但正在返回這些錯誤:

“通知:未定義的索引:第2行的/storage/ssd4/271/3416271/public_html/ajaxTest.php中的數據注意:未定義的索引:第5行的/storage/ssd4/271/3416271/public_html/ajaxTest.php中的數據

當我print_r($ get)它返回一個空數組。 HTML代碼看起來不錯,所以我想我搞砸了AJAX嗎?

(預先感謝您提供的任何幫助!)

這是我的HTML,js和PHP供參考:

<!DOCTYPE html>
<html>

<head>
    <script type="text/javascript" src="ajaxTest.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <title>AJAX test</title>
</head>
<body>

<div id="area">
    <h2>Sending Data to the Server</h2>
    <form action="" method="GET">
        <button type="submit" name="data" value="1" onclick="getData('ajaxTest.php', 'moreText')">1</button>
        <button type="submit" name="data" value="2" onclick="getData('ajaxTest.php', 'moreText')">2</button>
    </form>
    <br />
    <p id="moreText">The fetched message should appear here.</p>
</div>    
</body>    
</html>




var XMLHttpRequestObject = false;

if(window.XMLHttpRequest) {

    XMLHttpRequestObject = new XMLHttpRequest();
}
else if(window.ActiveXObject){
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData(dataSource, divID) {

    if(XMLHttpRequestObject){
        var obj = document.getElementById(divID);
        XMLHttpRequestObject.open("GET", dataSource);

        XMLHttpRequestObject.onreadystatechange = function() {
        if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
            obj.innerHTML = XMLHttpRequestObject.responseText;
        }
      }

      XMLHttpRequestObject.send();
    }
}




 <?php
 if ($_GET["data"] == "1") {
 echo 'The server got a value of 1';
 }
 if ($_GET["data"] == "2") {
 echo 'The server got a value of 2';
 }
?>

我了解您正在嘗試學習編碼,因此我不會批評您的代碼是否合理。

這是您所缺少的:

您沒有在URL中包括GET pram。 您假設像這樣在URL的末尾添加參數:

ajaxTest.php?data=1

這就是您獲得未定義索引的原因。

好吧,重寫之后,這將是正確的方法:

<!DOCTYPE HTML>
<html lang='en'>
    <head>
        <meta charset='UTF-8'>

        <!-- CSS -->
        <link rel="stylesheet" type="text/css" href="style.css" />

        <!-- JS -->
        <script type="text/javascript" src="ajaxTest.js"></script>
        <script type="text/javascript">

        function getData(dataSource, divID, data){

            var xhr = new XMLHttpRequest();
                data = encodeURIComponent(data);
                ele = document.getElementById(divID);

            xhr.open('GET', dataSource + '?data=' + data, true);
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.onload = function() {
                if (xhr.status === 200) {
                    alert('PHP Returned: ' + xhr.responseText);
                    ele.innerHTML = xhr.responseText;
                }
                else if (xhr.status !== 200) {
                    alert('Request failed.  Returned status of ' + xhr.status);
                }
            };
            xhr.send(null);
        }
        </script>

        <title>AJAX test</title>
    </head>
    <body>
        <div id='area'>
            <h2>Sending Data to the Server</h2>

            <button type="button" value="1" onclick="getData('ajaxTest.php', 'moreText', this.value)">1</button>
            <button type="button" value="2" onclick="getData('ajaxTest.php', 'moreText', this.value)">2</button>

            <p id="moreText">The fetched message should appear here.</p>
        </div>
    </body>
</html>

我刪除了該表單,因為您要做的只是單擊按鈕。 您根本不需要提交表單。 這樣,您也不必阻止默認的表單操作。

我還稍微更改了PHP,以便它返回所獲得的內容,而不僅僅是猜測:

<?php

if(!empty($_GET['data'])){
    echo 'The server got a value of: '. $_GET['data'];
}

?>

我已經對代碼進行了自我測試,並且運行正常。

<!DOCTYPE html>
<html>

<head>
    <script type="text/javascript" src="ajaxTest.js"></script>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <title>AJAX test</title>
</head>
<body>

<div id="area">
    <h2>Sending Data to the Server</h2>
    <form action="" method="GET">
        <button type="button" name="data" value="1" onclick="getData(this.value,'ajaxTest.php', 'moreText')">1</button>
        <button type="button" name="data" value="2" onclick="getData(this.value,'ajaxTest.php', 'moreText')">2</button>
    </form>
    <br />
    <p id="moreText">The fetched message should appear here.</p>
</div>    
</body>    
</html>


<script>

var XMLHttpRequestObject = false;

if(window.XMLHttpRequest) {

    XMLHttpRequestObject = new XMLHttpRequest();
}
else if(window.ActiveXObject){
    XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData(value,dataSource, divID) {

    if(XMLHttpRequestObject){
        var obj = document.getElementById(divID);
        XMLHttpRequestObject.open("GET", dataSource+"?data="+value,false);

        XMLHttpRequestObject.onreadystatechange = function() {
        if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
            obj.innerHTML = XMLHttpRequestObject.responseText;
        }
      }

      XMLHttpRequestObject.send();
    }
}
</script>
  1. 更改按鈕類型提交button
  2. 將值傳遞給ajax頁面。

試試這個,我認為它可能對您有用。

暫無
暫無

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

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