我收到一个非常不言自明的错误。然而,据我所知,索引不仅是 100% 定义的,它还包含一个值。这是今天让我发疯的一系列愚蠢问题中的最新一个。
这是您可能已经看过一百万次应该可以工作的代码。
jQuery
$('#projects').click(function (e) {
alert(aid);
$.post('core/functions/projects.php', { aid: aid })
.done(function(data) {
alert(aid);
$('#home_div').hide();
$('#pcd').fadeIn(1000);
})
.fail(function(jqXHR, status, error) {
alert(error);
});
});
这两次提醒我的价值6
PHP
<?php
require_once "$_SERVER[DOCUMENT_ROOT]/core/init.php";
if(isset($_POST)) {
$aid = $_POST['aid'];
echo $aid;
} else {
echo 'fail';
}
?>
我收到此错误:
Notice: Undefined index: aid in C:\xampp\htdocs\core\functions\projects.php on line 5
所以我在 if else 中添加了更深入的检查,现在看起来像这样
<?php
require_once "$_SERVER[DOCUMENT_ROOT]/core/init.php";
$account_id;
if(isset($_POST['aid'])) {
$aid = $_POST['aid'];
echo $aid;
} else {
echo 'fail';
}
现在它吐回来了fail
。我已经去了这里,检查错误,它与我想象的完全一样。这并不意味着为什么我得到它对我来说更有意义。
所以让我们回顾一下。我的jQuery
, 正在点击正确的PHP
文件,因为我正在从该特定PHP
文件中获得响应。我的变量保存一个值,因为jQuery
它用它保存的值 6 提醒我两次。但是我的PHP
文件没有收到这个值?有人可以向我解释为什么吗?
编辑
如果我在其中添加一行,我jQuery
会收到另一条消息,验证正在发送数据。但是我仍然收到未设置 $_POST 索引的错误。这太疯狂了
$('#projects').click(function (e) {
alert(aid);
$.post('core/functions/projects.php', { aid: aid })
.done(function(data) {
alert(aid);
alert(data);
$('#home_div').hide();
$('#pcd').fadeIn(1000);
})
.fail(function(jqXHR, status, error) {
alert(error);
});
});
现在我得到 3 个警报框,其值为 6。
1 个警报框在发送帖子之前触发,$aid 变量信息为 '6'
1 个警报框在使用 $aid 变量 '6' 再次接收数据
后触发 1 个警报框在现在使用 php 接收数据后触发响应又是“6”!
我是说WTF?这场噩梦会结束吗?这意味着即使php
是在帖子中设置的变量!这怎么可能?我的意思是看看php
它所回显的代码要么是“失败”要么是 $aid 和 $aid 不能有一个值,除非它是由帖子设置的,而且它不会给我未定义索引的错误。我需要休息一下,我会失去它。
萤火虫
在萤火虫我看到
我看到 POST ->
projects.php ->
POST ->
PARAMETERS ->
aid 6 ->
SOURCE ->aid=%0D%0A6
RESPONSE ->
响应中没有任何内容,我在这里发布响应的短暂时间是因为我关闭了“require_once”并且我的代码被注释掉了。
不过,源代码中有一些奇怪的东西。它说 SOURCE aid=%0D%0A6 而不是正常的 SOURCEaid = 6
第二次编辑
我注释掉了一大段代码来简化这个例子。该代码使用变量和查询的数据。然后返回在 中创建的表php
。如果取消注释代码,我可以在我的 RESPONSE 中以 html 形式看到表格。如果我转到 HTML,我实际上可以看到可视表。发生什么了?为什么该响应会膨胀我的 div 而不是表格?我现在将发布更多代码来解释
<?php
require_once "$_SERVER[DOCUMENT_ROOT]/TrakFlex/core/init.php";
if(isset($_POST['aid'])) {
$aid = $_POST['aid'];
try {
$query_projectInfo = $db->prepare("
SELECT projects.account_id,
projects.project_name,
projects.pm,
//...more columns
FROM projects
WHERE account_id = ?
");
$query_projectInfo->bindValue(1, $aid, PDO::PARAM_STR);
$query_projectInfo->execute();
$count = $query_projectInfo->rowCount();
if ($count > 0) {
echo "<table class='contentTable'>";
echo "<th class='content_th'>" . "Job #" . "</th>";
echo "<th class='content_th'>" . "Project Name" . "</th>";
//...more table headers
while ($row = $query_projectInfo->fetch(PDO::FETCH_ASSOC)) {
echo "<tr>";
echo "<td class='content_td'>" . "<a href='#'>" . $row['account_id'] . "</a>" . "</td>";
echo "<td class='content_td'>" . $row['project_name'] . "</td>";
//.. more data
echo "</tr>";
}
echo "</table>";
}
} catch(PDOException $e) {
die($e->getMessage());
}
} else {
echo 'could not load projects table';
}
?>
所以你可以看到我的完整 php 文件实际上发回了一个数据表。我可以在 FireBug -> NET -> XHR -> HTML 中看到这个表。我还可以在 FireBug -> NET -> XHR -> RESPONSE 中看到所有 php 代码。然而,应该保存表的 div 只保存else
语句“无法加载项目表”。所以我想我越来越近了,但我仍然卡住了。有任何想法吗?