PHP获取提交按钮的值

时间:2017-10-28 03:40:32

标签: javascript php jquery ajax

尝试让PHP返回按钮的值。不知道出了什么问题,但它还没有回复这些错误:

"注意:未定义的索引:第2行的/storage/ssd4/271/3416271/public_html/ajaxTest.php中的数据 注意:未定义的索引:第5行和第34行的/storage/ssd4/271/3416271/public_html/ajaxTest.php中的数据;

当我print_r($ get)时,它返回一个空数组。 HTML代码看起来很好,所以我想我搞砸了AJAX?

(预先感谢您提供任何帮助!)

这里是我的HTML,js和PHP供参考:

summary(g3)

# Formula: x ~ p_model(ind, a, b, d)
# 
# Parameters:
#   Estimate Std. Error t value Pr(>|t|)    
#   a1   5.9307     0.5588  10.613 5.93e-14 ***
#   a2   3.5689     0.7098   5.028 8.00e-06 ***
#   a3  -2.2066     0.8901  -2.479 0.016894 *  
#   b1  12.9545     0.5289  24.495  < 2e-16 ***
#   b2  17.4709     0.2708  64.516  < 2e-16 ***
#   b3  11.3839     0.3116  36.538  < 2e-16 ***
#   d1  11.4351     0.8568  13.347  < 2e-16 ***
#   d2   1.8893     0.4897   3.858 0.000355 ***
#   d3   1.0848     0.6309   1.719 0.092285 .  
# ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# 
# Residual standard error: 0.7476 on 46 degrees of freedom
# 
# Number of iterations to convergence: 34 
# Achieved convergence tolerance: 8.116e-06

3 个答案:

答案 0 :(得分:1)

我知道您正在尝试学习编码,因此我不打算批评您的代码的完整性。

这是你缺少的东西:

您没有在网址中包含GET婴儿车。您可以在URL的末尾添加params,如下所示:

ajaxTest.php?data=1

这就是你得到未定义索引的原因。

答案 1 :(得分: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'];
}

?>

我自己测试了代码,当然它工作得很好。

答案 2 :(得分:0)

<!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. 将按钮类型提交更改为按钮
  2. 将值传递给ajax页面。
  3. 试试这个,我认为它可能适合你。