因此,這源於昨天的一個問題,因爲錯誤是非同尋常的,所以它很快就會失控。這個問題依然存在,但問題被擱置,here,我被要求改革一個現在與當前問題有關的新問題。所以,我們走了。
問題本質上是基本的。如果您昨天在幫忙,我已經從$ .post切換到$ .ajax文章,以便爲我的PHP
文件提供一個變量。但是,我的PHP
文件似乎永遠不會收到此變量,指出索引是'未定義'。
現在,這通常意味着變量持有沒有價值,被錯誤命名,或者被錯誤地發送。經過整整一天的搞砸之後(殺了我),我仍然沒有理由認爲我的PHP
文件不應該接收這些數據。由於我對此很新,我真的希望有人能夠發現明顯的錯誤或推薦另一種可能的解決方案。
下面的代碼
jQuery的
$('#projects').click(function (e) {
alert(aid);
$.ajax({
url:'core/functions/projects.php',
type: 'post',
data: {'aid' : aid},
done: function(data) {
// this is for testing
}
}).fail (function() {
alert('error');
}).always(function(data) {
alert(data);
$('#home_div').hide();
$('#pcd').fadeIn(1000);
$('#project_table').html(data);
});
});
PHP
<?php
include "$_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,
//..irrelevant code
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>";
//..irrelevant code
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>";
//..irrelevant code
echo "</tr>";
}
echo "</table>";
}
} catch(PDOException $e) {
die($e->getMessage());
}
} else {
echo 'could not load projects table';
}
?>
當我按運行該代碼 '#projects' 我得到2個警報。第一次提醒說'6',這是變量'aid'的值,並且是預期的。第二個提醒是空白的。
現在,這裏是我困惑的地方。如果帖子發送的值是6.是不是$ _POST ['aid']設置?此外,如果這是真的不要我的代碼執行我的條件語句而的if
部分比我else
?無論哪種方式,這使我感到奇怪。我不應該收到東西回我的PHP
文件?
因此,在Firebug我們相信,對吧?如果我打開Firebug並像這樣穿過
Firebug -> POST projects.php -> XHR -> POST(tab) ->
我在「參數」窗口中看到6,在「源」窗口中看到「6」。然後,如果我點擊「回覆」和「HTML」標籤,它們都不具有任何價值。
所以不管怎麼說,文字的那面牆是我的問題。再次,我真的希望有人能幫助我。我不想再浪費時間在一個簡單的解決方案上。
編輯
現在如果我改變我的PHP文件,看起來像這樣
<?php
if(isset($_POST['aid'])) {
$aid = $_POST['aid'];
echo $aid;
} else {
echo 'fail';
}
的迴應是 '6'!萬歲!我們取得了突破!現在爲什麼它不會加載我的查詢結果?
側面說明 爲此應以最初被注意到,如果我帶走
if(isset($_POST['aid'])){
//all my code
} else {
//response
}
,只是硬編碼變量$援助這樣
$aid = '6';
然後直接運行PHP
文件查詢成功並且頁面加載其動態創建的表格。
而且響應答案問我的一個使用
$('#projects').click(function (e) {
alert(aid);
$.ajax({
url:'core/functions/projects.php',
type: 'post',
data: aid,
success: function(data) {
// this is for testing
}
}).error (function() {
alert('error');
}).complete (function(data) {
alert(data);
$('#home_div').hide();
$('#pcd').fadeIn(1000);
$('#project_table').html(data);
});
});
我用這一點,但我使用jQuery v1.10.2的,並根據這些this方法或將被棄用。無論哪種方式,它在結果中取得了0的差異。
無論如何現在的問題。爲什麼如果我使用簡單的版本,我得到echo'd回我的$援助變量'6'。但是,當我嘗試運行我的查詢,我得到沒有。也請儘量記住,如果我硬編碼6,表創建。
我修改了這個問題,使其更清楚目前的問題是什麼 –