如何使用jquery发布变量时修复"未定义的索引"



我正在将一些变量发布到php文件中。变量来自表单。因此,当我将变量放入表单中时,它们会发布到 php 文件中。但是,当我想实际使用这些变量时,它们会作为未定义的索引出现。我必须使用json_encode并使用后回调函数检索变量。但是我希望变量在使用 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;

您将获得以下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文件中,您正在尝试访问$_POST的索引opponent但在从getData()请求时未设置参数opponent

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

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

最新更新