使用jquery发布变量时如何修复“未定义索引”[重复]

Posted

技术标签:

【中文标题】使用jquery发布变量时如何修复“未定义索引”[重复]【英文标题】:How to fix 'undefined index' when posting a variable using jquery [duplicate] 【发布时间】:2019-12-17 17:08:58 【问题描述】:

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

我尝试将 post 函数放在 get get 函数之前。 我曾尝试使用 json_decode 我尝试使用 $_REQUEST 而不是 $_POST 如果 json_encode 只是用来回显 $_POST 变量,那么它将显示在回调“成功”函数中。但我希望在代码中大量使用 $_POST 变量,并显示何时使用 get 函数。 查看其他人的答案,我发现 $_POST 的索引显然是未定义/空的。但我的代码将表单发送到 PHP,所以它不应该为空。

<!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】:

您将获得以下XMLHttpRequestundefined 索引

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 文件中,您尝试访问$_POSTopponent 索引,但是当您从getData() 请求时,您没有设置参数opponent

因此,您应该通过XMLHttpRequest 使用opponent 参数执行POST 请求,或者通过isset 像检查PHP 端

$opponent = isset($_POST['opponent']) ? $_POST['opponent'] : null;
echo $opponent;

【讨论】:

以上是关于使用jquery发布变量时如何修复“未定义索引”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法连接到本地 PHP 站点(未定义索引和未定义变量错误)[重复]

Laravel:当我从 jquery 添加变量时,如何修复 Null 输入?

使用 MySQL 和 jQuery 比较数据库值和文本输入的问题 - 未定义索引和 mysql_fetch_assoc() 错误

PHP邮件不断给我未定义的索引,帮助?

PHP 注意:未定义索引:将表单提交同步到 mailchimp 列表时

根据环境变量运行 Laravel 命令