私は比較的初心者で、AJAXコーディングの問題を解決できなかったので、専門家の助けを借りてこれを提出すると思いました。
現在の設定:(フォームからAJAXスクリプトに送信された日付値)
選択した値(日付)は、メインページのドロップダウンフォームからonchangeイベントを介して送信されます。このイベントは、同じページでAjaxスクリプトを呼び出し、その値を別のPHPファイル(getuser.php)に渡します。Getuser.phpは、この日付値を取得して、テーブルに表示しているMySQLデータベースから情報を返します。その後、getuser.phpのテーブルは、JavaScriptの「グライダー」の一部としてdivタグ(tab1)でメインページに表示されます。これは現在の形では問題なく機能しますが、私が最終的に達成しようとしていることではありません。
必要なセットアップ:(フォームからではなく、メインページのロード時に事前定義されたPHP変数からAjaxスクリプトに渡される日付値)
メインページをロードするときに、目的の日付値がすでにPHP変数($ mydate)に割り当てられているため、日付を個別にフォームで選択したり、この選択したフォームの日付を渡したりする必要はありません。実行する必要があるのは、ページの読み込み時にPHP変数$ mydateをAJAXスクリプトに自動的に渡すことです。これにより、この値がURLに組み込まれ、(メインページの読み込み時に)getuser.phpに自動的に送信されます。ユーザー定義のフォーム選択。
これはメインページの現在のAJAXスクリプトです(フォーム送信メソッドを介して正常に機能します):
<script type="text/JavaScript">
function showUser(str)
{
if (str=="")
{
document.getElementById("tab1").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("tab1").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>
これは、現在日付を選択してAJAXスクリプトに渡すメインページの現在のフォームです。
<form>
<SELECT NAME="" onchange="showUser(this.value)">
<option value="">Select a date:</option>
<option value="2012-09-26">2012-09-26</option>
<option value="2012-09-25">2012-09-25</option>
<option value="2012-09-07">2012-09-07</option>
<option value="2012-09-08">2012-09-08</option>
<option value="2012-08-01">2012-08-01</option>
<option value="2012-08-04">2012-08-04</option>
</SELECT>
</form>
..ただし、現在の日付はphp変数$ mydateのメインページの読み込み時にすでに設定されているため、フォームは必要ありません。
セカンダリページgetuser.phpは、渡されたURLの値($ q = $ _ GET ["q"];)を取得し、それを使用してMySQLデータベースの情報をテーブルに表示します。このテーブルは、別のJavaScript「グライダー」の形式でdivタグ(タブ1)でメインページに表示されます。
<div id="glider"><div class="controls">
<a href="#tab1">Tab 1</a> |
<a href="#tab2">Tab 2</a> |
<a href="#tab3">Tab 3</a> |
<a href="#tab4">Tab 4</a></div>
<div class="scroller"><div class="content">
<div class="section" id="tab1">Tab 1</div>
<div class="section" id="tab2">Tab 2</div>
<div class="section" id="tab3"><img src=" "
/></div>
<div class="section" id="tab4">Tab 4</div>
</div></div></div>
<script type="text/JavaScript" charset="utf-8">
new Glider('glider');
</script>
フォームをバイパスして$mydateをAJAXスクリプトに直接取得し、上記のように自動的に機能させるために、AJAXスクリプトコードの複数のバリエーションを試しましたが、何も機能しません。これにはおそらく簡単な答えがあり、それは単に構文的なものかもしれません。