使用firebug我不断收到'item','rating'和'classes'的'undefined index'通知。以下是我的代码。在PHP代码中,如果我注释掉if / die语句,那就是我从'未定义索引',如果我离开if / die语句,我得到'有一个问题'作为与firebug的响应。我的问题是你如何正确定义索引?我想要做的是使用POST方法将一些值传递给另一个PHP文件。如果我改变Javascript代码以确保这一点是好的,一切看起来都不错,但是当它进入下一阶段,这是下面的PHP代码,那就是我的问题发生的地方。顺便说一句,我不是一个程序员,而且这个东西很新,这只是一个侧面项目。感谢您提前提供任何帮助。
<?php
require_once("classes/include.all.php");
// Check that the data was sent
if (sizeof($_POST) == 0
|| $_POST['item'] == null
|| strlen(trim($_POST['item'])) == 0
|| $_POST['rating'] == null
|| strlen(trim($_POST['rating'])) == 0
|| is_numeric($_POST['rating'])
|| $_POST['classes'] == null
|| strlen(trim($_POST['classes'])) == 0)
{
die("There was a problem");
}
echo Rating::RateItem($_POST['item'], $_POST['rating'], $_POST['classes']);
?>
Javascript代码
function RateItem(varItemId, varRate)
{
var varorgclass = document.getElementById(varItemId).className;
var request;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
request=new XMLHttpRequest();
}
else
{// code for IE6, IE5
request=new ActiveXObject("Microsoft.XMLHTTP");
}
request.open("POST","ajax.rate.item.php",true);
//request.onload= ReloadRating;
request.setRequestHeader('item',varItemId);
request.setRequestHeader('rating',varRate);
request.setRequestHeader('classes',varorgclass);
request.send();
答案 0 :(得分:4)
在$_POST['item'] == null
上(在问题中提到的第一个内容中)出现警告,因为$_POST['item']
不存在。
您可以通过以下方式阻止:
isset($_POST['item'])
首先,或
array_key_exists('item', $_POST)
或....您为error_reporint()
/ E_WARNING
停用E_NOTICE
。
推荐第一个解决方案。
答案 1 :(得分:0)
您的变量未设置,请尝试以下操作:
<?php
require_once("classes/include.all.php");
// Check that the data was sent
if (isset($_POST['item'], $_POST['rating'], $_POST['classes'])) {
if (sizeof($_POST) == 0
|| $_POST['item'] == null
|| strlen(trim($_POST['item'])) == 0
|| $_POST['rating'] == null
|| strlen(trim($_POST['rating'])) == 0
|| is_numeric($_POST['rating'])
|| $_POST['classes'] == null
|| strlen(trim($_POST['classes'])) == 0)
{
die("There was a problem");
}
echo Rating::RateItem($_POST['item'], $_POST['rating'], $_POST['classes']);
}
?>
答案 2 :(得分:0)
尝试使用!empty($_POST['item'])
作为您的三个变量。
答案 3 :(得分:0)
如果未设置这些值,则javascript中存在问题,这可能是由于浏览器不兼容。由于你是新手,我强烈建议使用JQuery - 它易于使用,轻巧,便携。您可以使用Google的JQuery托管副本进行快速访问,这也是大多数人已经缓存的。
首先,将其包含在HTML / PHP文档的开头:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
然后,使用以下javascript代替您当前的“请求”设置:
$.ajax({
url:"ajax.rate.item.php",
type:"POST",
data:{item:varItemId,rating:varRate,classes:varorgclass},
success:function(result){
alert(result);
}
});