フォームの一部として、複数のティアドロップダウンセレクションを作成しています。
アイデアは、6つの選択レベルが最終的にフォームフィールドに挿入する値になるということです。
フォームのヘッダーのjavascript
<script type="text/javascript">
function getInfo(str)
{
if (str=="")
{
document.getElementById("catTitle").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("catTitle").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","cat_title.php?q="+str,true);
xmlhttp.send();
}
</script>
選択ごとに1つのスクリプトを作成しました-私はjavascript/jqueryに不慣れで、ほとんど知らないので、単純化された方法を見ていませんでしたが、1つのスクリプトを使用して複数回呼び出す-その結果、getInfo( )最初の場合はgetInfo2()、2番目の場合はgetInfo3()、3番目の場合はgetInfo3()というように続きます。
ドキュメントの本文で、フォームを開始します。フォーム内に選択ボックスがあります。onchange='function()'を使用して各値を呼び出すと、値がに挿入されます。
これが現在の選択です。
Select Category : <br>
<select name="level1" id="level1" onchange="getInfo(this.value)">
<option></option>
<?
$sql="SELECT * FROM Ebay_Category WHERE Level='1' ORDER BY Category";
$results=mysql_query($sql);
while($row=mysql_fetch_array($results)){
if($row['CategoryID']!=$lastrowid){
echo "<option value='".$row['CategoryID']."' >".$row['Category']."</option>";
$lastrowid=$row['CategoryID'];
}
}
?>
</select>
<br>
<span id="catTitle"></span><br>
<span id="catTitle2"></span><br>
<span id="catTitle3"></span><br>
<br><br>
これが私の最初のcat_title.phpファイルのコードです。それぞれが次に作成される選択ボックスのIDを変更します。(また、すべての呼び出しを利用してセッション時間を追跡するので、10分後にタイムアウトにすることができます。-ユーザー名を収集する習慣もあるので、後でログファイルに簡単に追加できますが単純な選択にログファイルを追加するのがわかりません-これが私が知らない呼び出しの制限に達するのを助けている場合に備えて説明したかっただけです)
<?php
include "signup/include/session.php";
include "signup/include/z_db.php";// database connection details stored here
$gap=10; // change this to change the time in minutes, This is the time for which active users are collected.
$tm=date ("Y-m-d H:i:s", mktime (date("H"),date("i")-$gap,date("s"),date("m"),date("d"),date("Y")));
$ListerID=$_SESSION['userid'];
mysql_connect("$servername", "$dbusername", "$dbpassword")or die("cannot connect");
mysql_select_db("$dbname")or die("cannot select DB");
$userInfo=(mysql_fetch_array(mysql_query("SELECT * FROM plus_signup WHERE userid='$ListerID'")));
$UserLevel=$userInfo['users_level'];
//check to see if leaf, if yes - echo result only
$vx=$_GET["q"];
$LeafCheckSQL="SELECT * FROM Ebay_Category WHERE ParentID='".$vx."' ORDER BY Category";
$result=mysql_query($LeafCheckSQL);
echo "<select id=\"lev2\" onchange=\"getInfo2(this.value)\">";
while ($row=mysql_fetch_array($result)){
echo "<option value='".$row['CategoryID']."'>".$row['Category']."</option>";
}
echo "</select>";
//}
?>
2番目のドロップダウンを作成するために機能します。これを選択すると、3番目のドロップダウンを作成するために機能します。
問題を追跡するのに役立つalert('messages')を追加しました。3番目のドロップダウンで、getInfo(str)呼び出しを呼び出すと、プロセス全体がステップスルーされますが、xmlhttp.readyStateは4であり、200である必要があるxmlhttp.statusは、最初にそれぞれ2:500として表示され、次にonreadystatechangeへの再試行のように見える場合は4:500になります-
これがもう1つの奇妙なことです。それが制限だった場合、3回目が失敗した後でも、すべての呼び出しで4:200のフォーム選択12をうまく使用できるのはなぜですか。私はこれでとても迷っています。
私はできるだけ多くの情報を追加しています。このプロジェクトの後、jqueryの学習に真剣な研究を捧げます。これは、非常に役立つように思われるからです。
しかし、誰かが私を絶対的な初心者のように扱ってくれて、私が間違ったことを理解し、これを修正するために何ができるかを教えてくれるなら、私はそれが大好きです。
前もって感謝します。