我在IE中使用这个ajax脚本有问题,因为它不起作用,它在FF和Chrome中工作得很好,但在IE中根本不起作用!有两个下拉框,根据我在第一个下拉框中选择的内容,第二个下拉框显示所选城市的值。
<select class="selectDest" name="Prej" onChange="getState(this.value)">
<option></option>
'.funksionet::all_directions().'
</select>
这是第二个下拉框:
<div id="statediv"><select class="selectDest" name="deri">
<option></option>
</select></div>
这是ajax函数:
<script language="javascript" type="text/javascript">
function getXMLHTTP() { //function to return the xml http object
var xmlhttp=false;
try{
xmlhttp=new XMLHttpRequest();
}
catch(e) {
try{
xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e){
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e1){
xmlhttp=false;
}
}
}
return xmlhttp;
}
function getState(countryId) {
var strURL="findState.php?country="+countryId;
var req = getXMLHTTP();
if (req) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
document.getElementById(''statediv'').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:'n" + req.statusText);
}
}
}
req.open("GET", strURL, true);
req.send(null);
}
}
</script>
这是findstate.php文件:
<?php
require_once 'includes/constants.php';
$country = $_GET['country'];
$link = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD); //changet the configuration in required
if (!$link) {
die('Could not connect: ' . mysql_error("1"));
}
mysql_select_db(DB_NAME);
$query="SELECT * FROM costs WHERE prej = '$country';";
$result=mysql_query($query) or die("2");
?>
<select class="selectDest" name="Deri">
<option></option>
<?php while($row = mysql_fetch_array($result)) {
print'<option>'.$row['deri'].'</option>';
}
?>
</select>
我真的需要做这件事,如果有人能帮我,我将不胜感激。因为我不擅长JavaScript!但是,如果没有办法,我可以做这个跨浏览器,那么我想知道,我不会这样做。
$country = $_GET['country'];
$query="SELECT * FROM costs WHERE prej = '$country';";
我知道,这是偏离主题的,但它不是很好的
在IE中,事件处理程序内部的"this"指针不是导致事件的元素。而是窗口对象。要以跨浏览器的方式做到这一点,我建议您通过阅读以下内容来真正了解它的所有功能:https://developer.mozilla.org/en/DOM/element.addEventListener
使用jQuery会有所帮助,但我仍然认为您应该理解它以避免未来的问题:(
Javascript的基本原理在每个浏览器上都差不多,但DOM、AJAX和其他一些部分有很多不同的实现(尤其是IE喜欢不同(。很久以前,许多非常聪明的javascript程序员决定停止这种痛苦,并开发了javascript库。有很多javascript库可用,但在我看来,最简单的是jquery。您可以查看代码,了解Jquery是如何处理AJAX请求的。如果你问我的话,代码真的很好。Jquery有很好的文档,当使用Jquery时,你的代码看起来会干净得多。
我在jsfiddle上分享了一个小片段,它只在几行中执行http POST请求(警报输出(,可以在以下位置找到:http://jsfiddle.net/9yC8h/2/./echo/html/
只是一个url,它输出jsfiddle所解释的html。