したがって、これは昨日の問題が原因で、エラーが異常だったため、すぐに制御不能になりました。この問題はまだ存在しますが、質問はここで保留になり、現在の問題に関連する新しい質問を修正するように求められました。それでは、行きましょう。
問題は本質的に基本的なものです。PHP
あなたが昨日助けてくれたなら、変数をファイルに配信するために $.post から $.ajax 投稿に切り替えました。ただし、私の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」を示しており、予想されます。2 番目のアラートは空白です。
ここで私は混乱します。値 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 をハードコードするだけです
$aid = '6';
次に、PHP
ファイルを直接実行すると、クエリが成功し、動的に作成されたテーブルがページに読み込まれます。
また、私に使用を求める回答の1つに応じて
$('#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 を使用しています。これによれば、これらのメソッドは非推奨であるか、非推奨です。いずれにせよ、結果に違いはありませんでした。
とにかく問題は今です。単純なバージョンを使用した場合、'6' の $aid 変数が返されるのはなぜですか。ただし、それを使用してクエリを実行しようとすると、何も得られません。また、6 をハードコードするとテーブルが作成されることを覚えておいてください。