使用jQuery发布变量时如何修复“未定义索引”

时间:2019-08-10 02:32:20

标签: javascript php jquery

我正在将一些变量发布到php文件中。变量来自表单。因此,当我将变量放入表格中时,它们将被发布到php文件中。但是,当我想实际使用变量时,它们是未定义的索引。我必须使用json_encode并使用post call back函数检索变量。但是我希望变量在使用get函数/方法时起作用。我是初学者,所以请放轻松。

我试图将post函数放在get get函数之前。 我尝试使用json_decode 我尝试使用$ _REQUEST代替$ _POST 如果仅使用json_encode来回显$ _POST变量,则它将在回调“成功”函数中显示。但是我希望在整个代码中慷慨地使用$ _POST变量,并显示何时使用get函数。 通过查看其他人的答案,我发现$ _POST的索引显然是未定义/为空。但是我的代码将表单发送给PHP,因此它不应为null。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>
</head>
<body>
<h1>Combining HTML, JS & PHP</h1>

<form id="IPLAnalyisForm" method="post">
     <div>
        <select name="opponent">
        <option name = "Sunrisers Hyderabad" value="Sunrisers Hyderabad">Sunrisers Hyderabad</option>
        <option name = "Royal Challengers Bangalore" value="Royal Challengers Bangalore">Royal Challengers Bangalore</option>
        <option name = "Kolkata Knight Riders" value="Kolkata Knight Riders">Kolkata Knight Riders</option>
        <option name = "Delhi Daredevils" value="Delhi Daredevils">Delhi Daredevils</option>
        <option name = "Kings XI Punjab" value="Kings XI Punjab">Kings XI Punjab</option>
        <option name = "Rajasthan Royals" value="Rajasthan Royals">Rajasthan Royals</option>
    </select>

        <input onclick="getData()" type="submit" name="submit" id="submit"     value="submit parameters"/>
    </div>
 </form>
 <button onclick="getData()">Submit query</button>

 <div id = "result"></div>
 <script type="text/javascript">

 </script>
 </body>
 <script src="IPL.js"></script>
 </html>

JavaScript(带有一些Jquery)     var obj,dbParam,xmlhttp;

$(document).ready(function() {
    $('#IPLAnalyisForm').submit(function(e) {
        e.preventDefault();
        $.ajax({
            type: "POST",
            url: 'IPL.php',
            data: $(this).serialize(),
            success: function()
        {
            // var jsonData = JSON.parse(response);
            // alert(jsonData);
        }
    });
});
});

function getData() {
    obj = {"table": "batting", "limit": 5};
    dbParam = JSON.stringify(obj);
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        if (this.readyState == 4 && this.status == 200) {
        document.getElementById("result").innerHTML = this.responseText;
    }
};
    xmlhttp.open("GET", "IPL.php?x=" + dbParam, true);
    xmlhttp.send();
}

PHP代码

  $opponent =  $_POST['opponent'];
  echo $opponent;

1 个答案:

答案 0 :(得分:1)

您将获得以下undefined的{​​{1}}索引

XMLHttpRequest

function getData() { obj = {"table": "batting", "limit": 5}; dbParam = JSON.stringify(obj); xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function () { if (this.readyState == 4 && this.status == 200) { document.getElementById("result").innerHTML = this.responseText; } }; xmlhttp.open("GET", "IPL.php?x=" + dbParam, true); xmlhttp.send(); } 文件中,您尝试访问IPL.php的{​​{1}}索引,但是当您向opponent请求时,没有设置参数$_POST

因此,您应该使用opponent的{​​{1}}参数进行POST请求,或者像{p>一样使用getData()来检入PHP。

opponent