ユーザーにシームレスなエクスペリエンスを提供するために、AJAX、HTML、および PHP をすべて一緒に使用しようとしています。現在、変数を PHP フォームに渡すのに問題があります。私のやり方は少し複雑ですが、これが AJAX を使った最初の実験なので、もっと簡単な方法があるかどうかはわかりません。
詳細に説明するには:
<div class="block" id="articles"></div>
詳細をロードして記事をロードするこの部門があります。この部門内で、ユーザーが記事に関連するコメントを追加できるようにしています。
function viewDets(str) {
if(str == "") {
document.getElementById("articles").innerHTML = "";
return;
}
if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("articles").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "viewDets.php?q=" + str, true);
xmlhttp.send();
}
これを使用すると、変数が viewDets に渡され、別のコンテナーが追加されます。
while($row = mysql_fetch_array($result)) {
$count++;
$taskComments = $row['Annotation'];
$userName = $row['Username'];
$timeStamp = $row['Time'];
echo "Comments";
echo "<p class=\"meta\">$count. $taskComments ($userName) -- $timeStamp</p>";
}
echo "</div></div></div></div></div></div>
<form name=\"inputCom\" method=\"get\">
<div class=\"four column\">
<div class=\"column_content\" id=\"commentInsert\">
<label>Enter Comment</label>
<input type=\"text\" id=\"comment\"value=\"\"></input>
<input type=\"hidden\" id=\"Uname\" value=\"$user\"></input>
<input type=\"hidden\" id = \"taskID\" name=\"taskID\" value=\"$q\" />
<button type=\"button\" id = \"commentSub\" onClick=\"insertComm(comment, Uname, taskID)\" />Enter Comment</button>
</div>
</div>
</form>";
この部門の名前は commentInsert です。私は AJAX をセットアップして、クリックすると、変数が PHP 関数にプッシュされ、データベースにコメントが挿入されるようにしました。
私が直面している問題は、その PHP 関数に渡すコメントを取得できないことです。
function insertComm(str, uname, id) {
insertC();
if(str == "") {
document.getElementById("commentInsert").innerHTML = "";
return;
}
if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function () {
if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("commentInsert").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET", "subCom.php?q=" + str, true);
xmlhttp.send();
};
document.getElementByID のようなものを呼び出そうとし、その関数を insertC(); として呼び出すことで、この関数をいじっています。しかし、insertC() 関数の有無にかかわらず、Javascript 関数の 3 つの変数を PHP 関数に渡す際にまだ問題があります。変数を 1 つだけ使用してみましたが、まだ渡すのに問題があります。
どんな助けでも大歓迎です。長い投稿で申し訳ありません。