2012-02-23 11 views
1

IEを使用していて、ドロップダウンが変更された後にデータベースからの値を含むテーブルを表示する単純なAJAXを実行する必要があります。ここでIEでAJAXを使用する方法

は私のスクリプトです:

<script type="text/javascript"> 
function getXML() 
{ 
var req; 
try { 
    req = new XMLHttpRequest(); 
} catch (trymicrosoft) { 
    try { 
     req = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (othermicrosoft) { 
     try { 
     req = new ActiveXObject("Microsoft.XMLHTTP"); 
     } catch (failed) { 
     req = null; 
     } 
    } 
} 

if (!req){ 

    return null; 
} else { 
    return req; 
} 
} 
function filter(month, year) 
{ 


if(getXML()){ 
var xmlhttp = getXML(); 
xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
{ 
document.getElementById("mandayTable").innerHTML=xmlhttp.responseText; 
    } 

} 
xmlhttp.open("GET","ajax/filterMandays.php?m="+month+"&y="+year,true); 
xmlhttp.send(); 
} else { 
alert("Error initializing XMLHttpRequest!"); 
} 
} 

</script> 

、ここでは私のAjaxのPHPは

ある
<?php 

     $q = "SELECT md.mandays_id,md.employeenum,md.month,md.year,md.required_man_days,d.firstname,d.lastname 
     FROM tbl_mandays md,tbl_employee_details d 
     WHERE md.active = '1' 
     AND md.employeenum = d.employeenum 
     AND md.month = '10';"; //employee_details WHERE approver = 0" 



     $res = $db->Execute($q); 

     echo "<table border = 1>"; 

     echo "<tr><th>Employee Number</th><th>First Name</th><th>Last Name</th><th>Month-Year</th><th>Required Man Days</th><th>Edit/Delete</th></tr>"; 

    /while($rows = $res->FetchRow()) 
     for($i=0;$i<5;$i++) 
     { 
                $mandays_id = $rows[0]; 

         $empnum = $rows[1]; 

         $month_year = $rows[2] ."-" .$rows[3]; 

         $required_man_days = $rows[4]; 

         $firstname = $rows[5]; 

         $lastname = $rows[6]; 

                echo "<tr><td>".$empnum . "</td><td>".$firstname ."</td><td>".$lastname ."</td><td>" . $month_year ."</td><td>" .$required_man_days . "</td><td width = \"200\" align = \"center\"><a href = 'edit_mandays.php?mandays_id=$mandays_id');'>Edit/Delete</a></td></tr>"; 
     } 



     echo "</table>"; 

     ?> 

問題は、最初の "ONCHANGE" に、それは何もしないということです。 2番目の "ONCHANGE"には、PHPコード内のテーブルのヘッダーがエコーされている唯一のものです。

また、($ i = 0; $ i < 5; $ i ++)のクエリを実行せずにループを変更して、qvaluesを "1"に変更しましたが、まだそれはわかりませんloo [それを表示します。

どのような問題があるようですか? :(

+0

「それは何か問題があると思われますか?何が問題なのですか?実際の問題の説明がありません。 – epascarello

+0

@epascarello、問題は、最初の "ONCHANGE"では何もしないということです。 2番目の "ONCHANGE"には、PHPコード内のテーブルのヘッダーがエコーされている唯一のものです。 私はクエリを使わずにループを($ i = 0; $ i <5; $ i ++)に変更しようとしましたが、qvaluesを "1"に変更しましたがまだloo [それを表示します。 – prukuhkoo

+2

あなたはjqueryを調べる必要があります - ブラウザ間で一貫性があり、非常に単純なものになります... – bryanmac

答えて

1

ダウンロードし、あなたのウェブサイトのためのjQueryを使用します。http://docs.jquery.com/Downloading_jQuery#Download_jQuery

をそして、あなたのコードは次のようなものになります。ここで

$('.mydropdown').change(function(){ 
    //get values for month, year 
    $.ajax({ 
    url: "ajax/filterMandays.php?m="+month+"&y="+year, 
    type: "GET", 
    success: function(data){ 
     //data is returned back 
     $('#mandayTable').html(data); 
    } 
    }); 

}); 
+0

これは良い提案です(jQueryはたくさんのクリーナーと抽象的な離れたところにありますブラウザ間の矛盾について)、必ずしも当面の問題に役立つとは限りません。 jQueryでコードをクリーンアップすることに加えて、実際に何が起きているのかを見るためにFiddler(または同様のもの)を起動します。 –

関連する問題